【发布时间】:2010-12-07 07:16:15
【问题描述】:
我正在实现一个显示项目列表的 wpf 应用程序,并提供通过在文本框中键入来过滤此列表的功能(我认为这是非常微不足道的用例)。
我们使用的是 MVVM 结构。
我的问题是,过滤列表是谁的责任?视图还是视图模型?
我应该在 xaml.cs 中实现“OnTextChanged”事件,还是应该使用 ViewModel 中的属性并使用 PropertyChanged 过滤列表。
后续问题是,我应该在 ViewModel 中使用 BindingList/ObservableCollection,还是使用 ICollectionView 将 ItemsControl 绑定到?
我尝试了这两种方法,它们都有效。赋予 ViewModel 责任使 View 后面的代码保持空白,但另一方面,我并不完全相信应用过滤是 ViewModel 的责任(例如:不同的视图可能需要不同的过滤)
有什么想法吗?
谢谢, 罗尔
编辑:
将它放入 ViewModel 让我感到困扰的是(在我当前的实现中)有一个引用 System.Windows.Data。这是我宁愿在 ViewModel 中没有的参考,因为它显然与 View 相关。还是我错过了什么?相关代码:
ICollectionView customerView = CollectionViewSource.GetDefaultView(customers);
【问题讨论】:
-
这是一个很好的问题,尤其是关于需要引用
System.Windows.Data的 ViewModel。
标签: .net wpf model-view-controller mvvm viewmodel