6

Model-View-ViewModel (MVVM) 方法似乎是 WPF UI 开发中的领跑者模式。几乎我读过的每一篇文章都暗示这是最佳实践。RelayCommand 或 DelegateCommand 的使用在许多文章中也很突出,似乎不使用其中任何一个(或任何其他变体)几乎不可能实现 MVVM。那么为什么它们不是 .NET 4 的一部分呢?

我知道 RelayCommand 实现起来真的很简单,而且很多第三方工具包已经有了它,但我只是想知道为什么微软会遗漏一些对所谓的“最佳实践”的实现如此基本和根本的东西?

4

3 回答 3

2

因为微软负责 WPF,而不是 MVVM。

如果你想要一个完整的工具包,其中包含一个好的 MVVM 应用程序所需的所有组件,我鼓励你看看 Prism:A good tutorial here

基本原因是微软专注于“主流” WPF 功能(如增强控件和绑定)。如果我是对的,MVVM 是由 MVVM 基金会“监督”的。

于 2011-06-24T14:31:17.140 回答
1

与大多数事情一样,它归结为金钱。它可能是一个简单的类,但将它包含在 .NET 中需要大量工作。单个类必须是:

  1. 发布前经过全面测试。还必须为将来的版本实施回归测试。
  2. 以多种语言完整记录,还必须进行验证。
  3. 它必须重命名,因为使用 RelayCommand 或 DelegateCommand 很可能会破坏任何已经拥有这些类的 WPF,因为会有命名冲突。

其中每一项都需要比您预期的更多的工作(即#2 将有初稿、修订、最终批准等)。

在此处找到相关链接。

于 2011-06-24T14:50:47.597 回答
0

我个人对此的看法是 RelayCommands 打破了 MVVM 的意图。

在我看来,为每个目的实现一个命令比使用 RelayCommands 更“最佳实践”,因为每个类都服务于“单一职责”。命令应该将其行为封装在自身中,而不是将其委托给视图模型。

调试 RelayCommands 不那么直接,而且当您必须逐步完成更多的函数/动作/委托并从一个对象跳转到另一个对象时,这是一种真正的痛苦。

于 2011-06-24T14:30:32.460 回答