Как я могу использовать RelayCommand
в wpf?
Как я могу использовать RelayCommand в wpf?
Ответ 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