Wpf 在MVVM中,ViewModel响应视图中用户操作的最佳方式是什么?
我理解在MVVM中:Wpf 在MVVM中,ViewModel响应视图中用户操作的最佳方式是什么?,wpf,mvvm,Wpf,Mvvm,我理解在MVVM中: 视图了解ViewModel ViewModel了解该模型 但它不能向上工作,因此模型对ViewModel一无所知 而ViewModel对视图一无所知 因此,ViewModel如何响应用户在视图上所做的操作,例如在文本框中键入内容或移动滑块等 我知道这是通过RoutedEvents来完成的,但我发现几乎所有RoutedEvent示例都在视图中使用CodeBehind,这正是MVVM中不再有的 这就剩下了RoutedCommands,我在MVVM中找到了更多的例子,但例如,
- 视图了解ViewModel
- ViewModel了解该模型
- 但它不能向上工作,因此模型对ViewModel一无所知
- 而ViewModel对视图一无所知
- 创建按钮
- 双击按钮
- 编写处理代码
一般来说,我发现在MVVM应用程序中使用RoutedEvents几乎没有什么理由,但是当您无法通过新的WPF特定方法实现您想要的目标时,它们是一个很好的、熟悉的安慰毯。请澄清,当人们提到DelegateCommand和RelayCommand时,他们实际上谈论的是同一件事:ICommand的一个实现,它允许您传入一个委托。您可以互换使用它们 就我而言,将视图(XAML)绑定到ViewModel中的delegateCommand是实现MVVM的最佳方式
我尽可能远离路由事件和代码隐藏。这很有启发性,谢谢。关于WPF的书籍告诉你的第一件事是RoutedEvents和RoutedCommand比WinForms中的旧方法好得多(它们可以在树上挖隧道和冒泡,等等),所以我假设MVVM中的一切都是这样做的。有趣的是,尽管RoutedEvents和RoutedCommands是如此新颖和改进,但它们对于编写解耦的应用程序仍然没有用处。MVVM模式变得如此流行是因为RoutedEvents和RoutedCommand(以及其他UI功能)非常繁重。如果要编写封装视图逻辑的解耦、可测试类,则需要将它们与视图解耦。MVVM在这方面真的很出色,只要你看看WPF和Silverlight的书中所说的在这种环境下开发的过时观点。