Roe*_*elF 10 .net wpf model-view-controller mvvm viewmodel
我正在实现一个显示项目列表的wpf应用程序,并提供通过键入文本框来过滤此列表的功能(我认为这是非常简单的用例).
我们正在使用MVVM结构.
我的问题是,谁负责过滤清单?视图还是视图模型?我应该在xaml.cs中实现"OnTextChanged"事件,还是应该在ViewModel中使用属性并使用PropertyChanged来过滤列表.
后续问题是,我应该在ViewModel中使用BindingList/ObservableCollection,还是使用ICollectionView将ItemsControl绑定到?
我尝试了两种方法,但它们都有效.赋予ViewModel责任使得View从代码中保持空白,但另一方面,我并不完全相信应用过滤是ViewModels的责任(例如:不同的视图可能需要不同的过滤)
有什么想法吗?
谢谢,罗尔
编辑:
把它放在ViewModel中让我困扰的是(在我当前的实现中)有一个System.Windows.Data的引用.这是我在ViewModel中没有的参考,因为它显然与View相关.或者我错过了什么?相关代码:
ICollectionView customerView = CollectionViewSource.GetDefaultView(customers);
Run Code Online (Sandbox Code Playgroud)
ViewModel,毫无疑问.避免代码隐藏是模式的最终目标 - 实际上,ViewModel本身就是代码隐藏视图.
例如:不同的视图可能需要不同的过滤
不同的视图应该有不同的ViewModel.ViewModel基本上是一种(更多)面向对象的代码隐藏文件方法.
关于CollectionView:您可以在视图XAML中定义CollectionViewSource,然后将其排序和过滤属性绑定到ViewModel.这应该在ViewModel和CollectionView中保持控制,但我相信它是过度工程的.
归档时间: |
|
查看次数: |
2710 次 |
最近记录: |