如何对ICommands进行分组,以便在执行其他ICommands时不能?

问题描述 投票:2回答:1

如果我将ICommand绑定到WPF中的控件,则会根据命令的CanExecute状态启用/禁用它。我知道在我想要“分组”的ICommand的所有CanExcecute实现中使用一个布尔字段可以实现禁用多个命令的执行。我的问题是,我应该这样做,还是以某种方式在XAML中进行?有没有“标准”的方法呢?任何.NET类来管理它?

c# wpf mvvm
1个回答
1
投票

.NET Framework中没有包含此类,但您可以查看如何在Prism中实现CompositeCommand类。

来自docs

它维护一个子命令列表(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);
}
© www.soinside.com 2019 - 2024. All rights reserved.