Как сгруппировать ICommands, чтобы, если один выполняется, другие не могли? - PullRequest
2 голосов
/ 19 марта 2019

Если я связываю ICommand с элементом управления в WPF, он включается / отключается в зависимости от состояния команды CanExecute.Мне известно, что отключение выполнения нескольких команд может быть выполнено с использованием одного логического поля во всех реализациях CanExcecute ICommand, который я хочу «сгруппировать».У меня вопрос, должен ли я сделать это так или сделать это в XAML каким-то образом?Есть ли «стандартный» способ сделать это?Любой класс .NET для управления им?

1 Ответ

1 голос
/ 19 марта 2019

В .NET Framework такого класса нет, но вы можете посмотреть, как класс CompositeCommand реализован в Prism.

Из документов :

Поддерживает список дочерних команд (DelegateCommand экземпляров). Метод Execute класса CompositeCommand просто вызывает метод Execute для каждой дочерней команды по очереди. Метод CanExecute аналогичным образом вызывает метод CanExecute каждой дочерней команды, но если ни одна из дочерних команд не может быть выполнена, метод CanExecute вернет false. Другими словами, по умолчанию CompositeCommand может выполняться только тогда, когда могут быть выполнены все дочерние команды.

Вы связываете дочерние команды, используя метод RegisterCommand класса CompositeCommand:

public DelegateCommand UpdateCommand { get; private set; }

public ViewModel()
{
    UpdateCommand = new DelegateCommand(Update);
    ApplicationCommands.SaveCommand.RegisterCommand(UpdateCommand);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...