我是MVVM模式的新手。我刚学习了这种模式,想在我的项目中使用它。我已经理解了这种模式的工作原理,并学会了如何使用命令。但是我有一个问题,如何处理其他控件的事件,例如ListBox的SelectionChanged事件。ListBox没有Command属性。
通常情况下,你不需要这样做。例如,你可以将 ListBox
的 SelectedItem
属性直接绑定到视图模型中的一个属性:
<ListBox ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/>
这不仅使您的视图模型可以访问所选客户,还允许视图模型通过设置属性本身来指定所选客户。
还有其他技术可以“避免”在代码后台直接处理事件,例如附加行为。但是,如果代码仅涉及视图并使代码更简单,您不应该害怕直接处理事件。
BookLibrary 应用程序是基于 WPF 应用程序框架 (WAF) 的,演示了如何在 Model-View-ViewModel (MVVM) 设计的应用程序中监听 WPF 事件。它允许用户选择多本书籍,以便一次性删除所有选中的书籍。请参阅 BookLibrary.Presentation.Views.BookView 类。