我有一个包含任务集合的项目 dto 列表。在我的 ViewModel 上,我有一个项目的 ICollectionView,因此我可以过滤标记为完成的项目,请参见下面的过滤器代码。
public void FilterDoneItems()
{
if (this.MarkDone)
{
ProjectsViewSource.Filter = new Predicate<object>(FilterDone);
}
else
{
ProjectsViewSource.Filter = null;
}
}
这适用于项目,但我也想过滤掉已完成的任务。由于 ProjectDTO 包含任务(列表),我无法将任务包装在 ICollectionView 中以在 ViewModel 中过滤它们。
我不确定如何最好地过滤任务,还有谁能帮忙吗?
最佳答案
每个集合都有一个由 WPF 维护的默认 CollectionView,当您绑定(bind)到集合时,WPF 实际上会绑定(bind)到该 View 。您可以通过调用 CollectionViewSource.GetDefaultView 获得对该 View 的引用。并设置过滤器:
CollectionViewSource.GetDefaultView(someList).Filter = somePredicate;
关于c# - 在集合 MVVM 中过滤集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3106184/