Mat*_*hew 8 .net c# wpf routed-commands icommand
ICommand在XAML中使用s时,WPF使用该CanExecute方法启用或禁用与该命令关联的控件.但是如果我Execute从程序代码中调用呢?我应该首先检查CanExecute以确保该命令可以执行,还是应该Execute为我处理此检查?
换句话说,我应该这样做:
if (someCommand.CanExecute(parameter, target))
someCommand.Execute(parameter, target);
Run Code Online (Sandbox Code Playgroud)
或者就是这样:
someCommand.Execute(parameter, target);
Run Code Online (Sandbox Code Playgroud)
好的风格会决定你应该做前者,先检查CanExecute.这将强制执行适当的分解和实施的一致性.此外,如果您确实想要使用绑定到按钮的此命令,它将按预期工作.
您应该只调用Execute并让命令实现处理验证。CanExecute主要为UI状态绑定提供。
除了非常简单的单线程方案外,即使您先调用CanExecute,也很容易出现争用情况,由此命令有效性在CanExecute和Execute调用之间改变,从而使对CanExecute的调用变得毫无意义。
| 归档时间: |
|
| 查看次数: |
1626 次 |
| 最近记录: |