如何处理MVVM中的事件

时间:2010-08-24 06:46:53

标签: c# wpf events mvvm

我是MVVM的新手。我只是学习这种模式,并希望在我的项目中使用它。我已经理解了这种模式的工作原理,并学会了如何使用命令。但我有问题如何处理另一个控件的事件,例如ListBox SelectionChanged事件。 ListBox没有Command属性

3 个答案:

答案 0 :(得分:14)

你经常不需要。例如,您可以将ListBox的{​​{1}}属性绑定到视图模型上的属性:

SelectedItem

这不仅可以让您访问视图模型中的选定客户,而且还允许您的视图模型通过设置属性本身来指定所选客户。

还有其他技术可以“避免”直接处理代码隐藏中的事件。例如,附加行为。但是,如果代码只关注视图并使代码更简单,则不应该直接处理事件。

答案 1 :(得分:0)

要向控件添加命令属性,它必须从ICommandSource继承。 查看this帖子,看看它是如何完成的。

答案 2 :(得分:0)

WPF Application Framework (WAF) BookLibraray 应用程序演示了如何在Model-View-ViewModel(MVVM)设计的应用程序中监听WPF事件。它允许用户选择多本书,以便他可以一次删除所有书籍。请参阅BookLibrary.Presentation.Views.BookView类。