我是MVVM中的新成员。我只是学习这种模式,并希望在我的项目中使用它。我已经了解了这种模式的工作原理,并学会了如何使用Commands。但我有问题如何处理另一个控件的事件,例如ListBox SelectionChanged事件。列表框没有命令属性如何处理MVVM中的事件
回答
你经常不需要。例如,你可以绑定ListBox
的SelectedItem
财产的财产在你的视图模型:
<ListBox ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/>
这不仅让您使用您的视图模型所选择的客户,这也让您的视图模型通过设置属性本身来指定选定的客户。
还有其他技术可以“避免”直接处理代码隐藏事件。例如,附加的行为。但是,如果代码只关注视图并简化代码,则不应该担心直接处理事件。
有趣的想法。例如,我想要处理DataGrid上的Mouse RightClick事件。在这种情况下,我必须在代码后面编写处理程序吗?还是必须使用附加的行为? – Polaris 2010-08-24 07:08:26
@宝来。看看那里的mvvm框架(cinch,mvvm light ...)。您会发现像EventToCommand Behavior这样的实现,您可以将事件绑定到命令。并且像肯特说的那样:在编码视图相关的东西时,随意使用codebehing :)例如BringToView在网格或列表框中选择的项目 – blindmeis 2010-08-24 07:28:19
+1,以便处理仅影响视图层的事件的注释。很多人都忘记了这一点...... – 2010-08-24 15:14:47
要向控件添加命令属性,它必须从ICommandSource继承。 检查this后,看看它是如何完成的。
的BookLibraray应用的WPF Application Framework (WAF)展示了如何倾听WPF事件模型 - 视图 - 视图模型(MVVM)设计的应用程序。它允许用户选择多本书,以便他可以一次删除所有的书。请参阅BookLibrary.Presentation.Views.BookView类。
- 1. 事件处理MVVM WinRT
- 2. 事件处理和MVVM
- 3. MVVM中的DataGrid事件处理
- 4. MVVM中的简单事件处理
- 5. 如何处理MVVM ViewModel中的“SelectedItemChanged”事件?
- 6. MVVM处理MouseDragElementBehavior的Drag事件
- 7. Wpf MVVM如何在ViewModel中处理TextBox“粘贴事件”
- 8. MVVM - 查看加载和事件处理
- 9. Window.Closing事件处理程序MVVM
- 10. WPF:如何处理模型中的事件以动态更新MVVM中的xaml
- 11. 如何在MVVM的上下文中处理DataGrid中的Header点击事件?
- 12. 你如何处理MVVM中的ComboBox SelectionChanged?
- 13. 在WPF MVVM项目中处理Viewmodel中的鼠标事件
- 14. 在ViewModel中处理CheckBox的Checked和Uncheck事件Silverlight MVVM
- 15. 实施中的ViewModel事件处理器与MVVM WPF
- 16. MVVM在Silverlight中连接事件处理程序的方式
- 17. 如何处理事件中的异常?
- 18. 如何处理C#中的SlideShowBegin事件#
- 19. 如何处理jQuery中的事件?
- 20. 如何处理WPF DataTemplate中的事件?
- 21. 如何在MVVM模式下处理viewmodel中的wpf datagrid MouseMove事件?
- 22. 事件处理,如何链接事件
- 23. 如何处理事件链
- 24. Java中的事件处理与C#中的事件处理
- 25. 在Azure事件中心中如何处理不同的事件?
- 26. 在MVVM中打开窗口时处理鼠标点击事件
- 27. 如何在Windows C++中处理事件
- 28. 如何在Opencart中处理事件?
- 29. 如何在Javascript中处理ActiveX事件
- 30. 如何在Global.asax中处理事件SessionSecurityTokenReceived?
我还没有使用它,但是您可能能够使用CollectionView或CollectionViewSource在各种集合类型控件上启用MVVM。 – 2010-08-24 07:10:07