Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top