Как я могу использовать RelayCommand в wpf?

Как я могу использовать RelayCommand в wpf?

2 ответа

Решение

Команда ретрансляции не существует в WPF, это всего лишь внешний класс, который стал известен после того, как он был определен в этой статье MSDN. Вы должны написать это самостоятельно, если хотите использовать это.

В противном случае вы можете воспользоваться командой Delegate из инструментария WPF, которая имеет несколько дополнительных функций по сравнению с кодом RelayCommand.


Ах, вопрос изменился, когда я печатал этот ответ. Предполагая, что вы используете RelayCommand, как определено выше, вам нужно предоставить ему один или два делегата, один из которых возвращает bool, который определяет, находится ли команда в допустимом состоянии для запуска, и второй, который ничего не возвращает и фактически выполняет команда. Если вы не предоставите делегата CanRun, команда будет считать, что он всегда находится в допустимом состоянии. Код, использованный в статье:

RelayCommand _saveCommand;
public ICommand SaveCommand
{
    get
    {
        if (_saveCommand == null)
        {
            _saveCommand = new RelayCommand(param => this.Save(),
                param => this.CanSave );
        }
        return _saveCommand;
    }
}

Объявляет RelayCommand, который при запуске вызывает метод Save() и возвращает свойство CanSave в качестве теста на достоверность. Когда эта команда привязана к кнопке в WPF, свойство IsEnabled кнопки будет соответствовать свойству CanSave ViewModel, а когда кнопка нажата (при условии, что она включена), метод View () будет вызываться в ViewModel.

Как альтернатива созданию RelayCommand Обертки для всех ваших методов могу ли я предложить бесплатную библиотеку и источник, который позволит вам использовать привязку {BindTo Save()}, Я создал его, чтобы упростить мои привязки. Это также делает относительное связывание намного легче. Вы можете найти его здесь: http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html

Другие вопросы по тегам