Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Команда ретрансляции не существует в 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 Button будет соответствовать свойству CanSave ViewModel, и когда кнопка будет нажата (при условии, что она включена), метод Save() будет вызываться в ViewModel.

Ответ 2

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