Ответ 1
Нет, вы не можете использовать его для изменения состояния can can. Это событие и объекты, которые участвуют в шаблоне ICommand
, могут выбрать прослушивание этого события, например. кнопка может использовать это событие, чтобы узнать, когда нужно повторно запросить состояние команд (путем вызова метода выполнения), чтобы установить его разрешенное состояние.
Для того, чтобы возможность выполнения шаблона могла быть полезной, должно быть что-то, что можно использовать для создания события. Призма DelegateCommand
имеет метод, который вы можете вызвать, чтобы вручную поднять это событие, чтобы подписчики повторно запрашивали метод can execute, если они выбрали шаблон.
- Назначить команду кнопке.
- Кнопка-подписчик может выполнять измененное событие.
- Выполнение кнопки может выполнить метод и возвращает кнопку false - отключает.
- Вы изменяете состояние, которое может выполнять метод, зависит от.
- Вы можете вызвать команду raise, которая может быть выполнена с помощью команды Prism.
- Возможно выполнение измененного события.
- Выполняется обработчик событий кнопки.
- Команда вызовов кнопок может выполнять кнопку "Метод".
Пример
В следующем примере на основе Prism мы меняем состояние SaveCommand CanExecute
от false до true, пока выполняется команда save. Вызов RaiseCanExecuteChanged
вызовет событие CanExecuteChanged
, и клиенты вызовут метод CanExecute
. На практике это приведет к тому, что кнопка "Сохранить", которая была привязана к SaveCommand
, изменит свое состояние с включенного на отключенное и снова на включенное.
public class BlingViewModel
{
private DelegateCommand<object> _saveCommand;
private bool _canSaveExecute = true;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new DelegateCommand<object>
(
executeMethod: _ => Save()
,
canExecuteMethod: _ => _canSaveExecute
);
}
return _saveCommand;
}
}
private void Save()
{
_canSaveExecute = false;
_saveCommand.RaiseCanExecuteChanged();
Console.WriteLine("Saving...");
_canSaveExecute = true;
_saveCommand.RaiseCanExecuteChanged();
}
}