我在 MVVM 中的理解是:
- View 知道 ViewModel
- ViewModel 知道 Model
- 但它不能向上工作,因此 Model 对 ViewModel 一无所知
- 并且 ViewModel 对 View 一无所知
So ViewModel 如何响应用户在 View 上执行的操作,例如在文本框中输入内容或移动滑块等。
我明白这是完成的路由事件但我发现几乎所有 RoutedEvent 示例都在视图中使用 CodeBehind,而这正是 MVVM 中不再有的功能。
这样就剩下路由命令我在 MVVM 中找到了更多示例,但例如移动滑块实际上不是command从这个意义上说,它是一个事件,所以我想知道这是否真的应该使用。
Then I 阅读建议 https://stackoverflow.com/questions/852441/fat-models-skinny-viewmodels-and-dumb-views-the-best-mvvm-approach/854824#854824例如 ”In MVVM 尽可能少地使用 RoutedEvents, and 无路由命令 at all." OK.
因此,例如在里面WPF 模型-视图-视图模型工具包 0.1 https://stackoverflow.com/questions/852441/fat-models-skinny-viewmodels-and-dumb-views-the-best-mvvm-approach/854824#854824来自 WPF 团队本身的项目,您有一个“委托命令”这看起来也是一种有趣的方式。
那么有些人也用“中继命令".
对于开发应用程序来说,做如此核心的事情会面临很多选择和困惑。
在 MVVM 中简单地完成我们过去 10 年使用 Code Behind 所做的事情的最佳方法是什么:
只是要明确的是,当人们提到委托命令 and 中继命令,他们实际上在谈论同一件事:ICommand 的实现,允许您传入委托。您可以互换使用它们。
就我而言,将视图 (XAML) 绑定到 ViewModel 中的 DelegateCommands 是实现 MVVM 的最佳方式。
我尽可能远离 RoutedEvents 和代码隐藏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)