2

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

我尝试在 Silverlight 中实现命令模式并碰壁。他们说命令很棒,因为您可以将它们写入 xaml,因此您可以保持代码隐藏干净,而且您的视图和视图模型之间存在松散耦合,因为视图中没有对视图模型的直接引用。

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

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

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

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

我应该如何在 Silverlight 中使用 MVVM 处理每个带有命令模式的控件的多个事件?

4

3 回答 3

2

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

于 2009-04-03T04:55:00.350 回答
1

SL 2.0 没有 WPF 强大,您必须在后面编写一些代码:-(。

不确定你是否读过这篇关于 MVVM 和 SL 的文章,讨论了 SL 的命令限制:

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

于 2009-04-02T18:02:42.947 回答
0

我相信你可以用附加的行为模式来欺骗你的事件处理程序。请参阅以下网址了解更多信息:

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

于 2009-04-02T13:53:07.530 回答