我有一个带有ObservableCollection _questions的ViewModel,它在创建VM实例时从DB加载。此列表还用于收集数据以保存回DB。
此Vm用于View1,它在ListView中显示列表,并使用CollectionViewSource.GetDefaultView(_questions)按属性进行过滤.Filter = ...
现在我需要创建View2,它将显示相同的列表但不进行过滤。 我无法将它绑定到相同的ObservableCollection _questions,因为它在CollectionViewSource上定义了过滤器,但我需要使用它来保持SaveToDb代码相同。
对于两个不同的ListView,是否可以对同一数据源进行不同的过滤?
答案 0 :(得分:1)
我从未喜欢使用CollectionViewSource。我会使用我的ViewModel中的一个新属性进行过滤,该属性使用Linq进行过滤:
public IEnumerable<MyType> FilteredItems()
{
get
{
return MyCollection.Where(x => x.MyProperty == SomeValue).ToArray;
}
}
然后我将ItemsSource
绑定到此属性并使用INotifyPropertyChanged事件通知UI集合的更改。
很难说这是否适合您的情况,因为没有提供有关您需要实现的信息的信息。