Как я могу использовать RelayCommand в wpf?
Как я могу использовать RelayCommand
в wpf?
2 ответов
команда Relay не существует в WPF, это просто внешний класс, который поднялся до выдающегося положения после того, как он был определен в эта статья MSDN. Вы должны написать его сами, если хотите его использовать.
в противном случае вы можете делегировать команду из инструментария 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 () при срабатывании и вернет Собственность кэнсэйв в качестве теста на истинность. Когда эта команда привязана к кнопке в WPF, свойство Isenabled кнопки будет соответствовать свойству CanSave ViewModel, и когда кнопка нажата (если она включена), метод Save () будет вызван на ViewModel.
в качестве альтернативы созданию RelayCommand
обертки для всех методов я могу предложить бесплатную библиотеку и источник, который позволит вам использовать привязку {BindTo Save()}
. Я создал его, чтобы упростить привязки. Это также облегчает относительную привязку. Вы можете найти его здесь: http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html