WPF和Silverlight命令实现对于M-V-VM(M-V-P)模式是否无用?

时间:2009-04-02 13:44:47

标签: c# wpf silverlight design-patterns mvp

请原谅我的无知,我最近才开始在Silverlight编码。

我尝试在Silverlight中实现命令模式并碰壁。 他们说命令很棒,因为你可以将它们写入xaml,这样你就可以保持你的代码隐藏清晰,你的视图和视图模型之间也有松耦合,因为在视图中没有直接引用viewmodel。 p>

您无法保持代码隐藏,因为您只能将一个命令绑定到控件,并且您必须决定在绑定命令时将触发哪个事件。如果一个控件有30个事件,你必须选择一个用于命令。另外29个将从后面的代码中执行来自事件处理程序的其他命令。

通过依赖注入可以更简单地实现松散耦合,命令添加一个无用的间接层,不会给任何额外的东西,它们只会使维护代码变得更加困难。当您对接口进行编程并确切地查看调用的方法时,更容易维护代码,然后在必须在命令定义和视图模型之间跳转时。

我是否遗漏了任何内容,或者命令真的不适合用于视图和视图模型的交互?

请参阅以下问题。这就是为什么我没有得到命令的所有炒作:

How should I handle multiple events per control w/command pattern using MVVM in Silverlight?

3 个答案:

答案 0 :(得分:2)

看一下Prism(http://prism.codeplex.com)和他们的DelegateCommand<>基础设施。它是Silverlight和WPF在ViewModel(或Presenter)中创建命令并直接绑定到它的一个很好的解决方案。同样在Silverlight 3中,Behaviors可以为您提供一些基于XAML的语法。

答案 1 :(得分:1)

SL 2.0并不像WPF那么强大,你必须编写一些代码: - (。

不确定您是否阅读过有关MVVM和SL的文章,讨论SL的命令限制:

http://msdn.microsoft.com/en-us/magazine/dd458800.aspx

答案 2 :(得分:0)

我相信您可以使用附加的行为模式欺骗您的事件处理程序。 有关更多信息,请参阅以下网址:

http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx