Rob*_* S. 7 wpf command mvvm command-pattern
我正在开发一个WPF应用程序并且我非常了解命令模式,但我发现MVVM的命令模式有几种不同的实现.Josh Smith在他的WPF示例应用程序中实现,DelegateCommand来自Prism,以及CommandBindings实现.
我的问题是,使用MVVM命令的普遍接受的最佳做法是什么?我的应用程序使用Prism,因此DelegateCommand我们可以使用.
我团队的开发人员正在争论哪种方法"最好".有些人不喜欢为每个命令生成的众多.cs文件,有些人更喜欢通过连接所有内容CommandBindings.我不知所措.任何人都能解释一下吗?
需要考虑两点:
不同 MVVM 框架提供的命令,例如 CommandSinkCommand 或 SimpleCommand(来自 Cinch)等,与普通 ICommand 一样工作。特别是,只要 WPF 认为发生了可能导致 UI 更改的事件,就会评估 CanExecute 处理程序。您也可以手动强制执行此操作CommandManager.InvalidateRequerySuggested()。
与此相反,Prism 的 DelegateCommands<> 不会调用 CanExecute 处理程序,除非您手动调用RaiseCanExecuteChanged()该命令。如果您希望更改此设置,以便在正常请求命令时也会触发它,请参阅http://compositewpf.codeplex.com/Thread/View.aspx?ThreadId=47338中的代码
编辑:
第二点:MVVM框架的命令通常接受一个对象作为命令参数。相比之下,Prism 的 DelegateCommands<> 类型更强(当然,如果您愿意,您也可以拥有 DelegateCommands)。
| 归档时间: |
|
| 查看次数: |
1700 次 |
| 最近记录: |