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