如果我将ICommand绑定到WPF中的控件,则会根据命令的CanExecute状态启用/禁用ICommand。我知道可以在要分组的ICommand的所有CanExcecute实现中使用一个布尔字段来禁用多个命令的执行。我的问题是,我应该这样做还是在XAML中这样做?有什么“标准”方法可以做到吗?任何.NET类可以管理它吗?
答案 0 :(得分:1)
.NET Framework中没有包含此类,但您可以看看CompositeCommand类在Prism中是如何实现的。
来自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);
}