c# - 在集合 MVVM 中过滤集合

标签 c# wpf silverlight mvvm

我有一个包含任务集合的项目 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/

相关文章:

Silverlight 4 和隐式样式

c# - 如何在 C# 中隐藏选项卡标题?

c# - 从 MDI 容器窗体中删除图标

c# - 使用 Kinect 线程

c# - 是否可以使用 StreamWriter c# 水平附加文本?

wpf - 什么是 "Page Function"?

c# - 通过 Net Core 将 C++ 数组传递到 C# 层

css - XAML 中的两个 SVG 元素显示不同的大小,尽管请求的高度和宽度相同

wpf - x :Key and x:Name之间的区别

c# - WP7动态更新UI而不阻塞线程