Wpf Prism:必须显式调用RaiseCanceTechChanged()
下面是一个非常简单的Prism.Wpf示例,其中包含一个DelegateCommand,它同时具有Execute和CanExecute委托 假设CanExecute依赖于某些属性。Prism的DelegateCommand似乎不像RelayCommand在其他MVVM框架中那样,在该属性更改时自动重新计算CanExecute条件。相反,您必须在属性设置器中显式调用RaiseCanExecuteChanged。这在任何非平凡的viewmodel中都会导致大量重复代码 有更好的办法吗 视图模型: 视图:Wpf Prism:必须显式调用RaiseCanceTechChanged(),wpf,mvvm,prism,delegatecommand,Wpf,Mvvm,Prism,Delegatecommand,下面是一个非常简单的Prism.Wpf示例,其中包含一个DelegateCommand,它同时具有Execute和CanExecute委托 假设CanExecute依赖于某些属性。Prism的DelegateCommand似乎不像RelayCommand在其他MVVM框架中那样,在该属性更改时自动重新计算CanExecute条件。相反,您必须在属性设置器中显式调用RaiseCanExecuteChanged。这在任何非平凡的viewmodel中都会导致大量重复代码 有更好的办法吗 视图模型: 视
这是故意的。它与性能有关 不过,您可以使用自定义命令替换Prism DelegateCommand,该命令可以执行您想要的操作。实施似乎起到了作用。但是,我不建议使用它。如果有很多命令,很可能会遇到性能问题
还有,请看这个。这是设计的。它与性能有关 不过,您可以使用自定义命令替换Prism DelegateCommand,该命令可以执行您想要的操作。实施似乎起到了作用。但是,我不建议使用它。如果有很多命令,很可能会遇到性能问题
另外,请参见此。正如@l33t所解释的,这是通过设计实现的。如果希望DelegateCommand自动监视VM属性的更改,只需使用DelegateCommand的observeProperty方法:
var command = new DelegateCommand(Execute).ObservesProperty(()=> Name);
正如@l33t所解释的,这是通过设计实现的。如果希望DelegateCommand自动监视VM属性的更改,只需使用DelegateCommand的observeProperty方法:
var command = new DelegateCommand(Execute).ObservesProperty(()=> Name);
谢谢我还发现以下链接非常有用:和相关的感谢。我还发现以下链接非常有用:和相关的
var command = new DelegateCommand(Execute).ObservesProperty(()=> Name);