我正在實現一個顯示項目列表的wpf應用程序,並提供了通過在文本框中輸入來過濾此列表的功能(我認爲這是相當平凡的用例)。MVP/MVVM - 篩選清單,誰負責?
我們正在使用MVVM結構。
我的問題是,誰的責任是過濾列表?視圖還是視圖模型? 我應該在xaml.cs中實現一個「OnTextChanged」事件,還是應該在ViewModel中使用一個屬性並使用PropertyChanged過濾列表。
後續問題是,我應該在ViewModel中使用BindingList/ObservableCollection,還是使用ICollectionView將ItemsControl綁定到?
我嘗試了兩種方法,他們都工作。賦予ViewModel責任將視圖中的代碼保留爲空,但另一方面,我並不完全相信ViewModels的責任是應用過濾(例如:不同的視圖可能需要不同的過濾)
任何想法?
感謝, 羅埃爾
編輯:
讓我困擾約把它在視圖模型是,(在我目前的實現)有一個參考System.Windows.Data。這是我在ViewModel中不希望看到的參考,因爲它顯然與View有關。或者我錯過了什麼?相關代碼:
ICollectionView customerView = CollectionViewSource.GetDefaultView(customers);
這是一個很好的問題,尤其是需要引用System.Windows.Data的ViewModel。 – pauldoo 2010-06-04 15:36:43