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