【发布时间】:2011-07-04 07:47:22
【问题描述】:
当我在 DataGrid 的列上的 filter_textboxes 中输入数据时,如何过滤绑定到 WPF DataGrid 的 ObservableCollection?
有没有不使用 codeproject 库的简单解决方案...?
【问题讨论】:
标签: wpf datagrid filter observablecollection
当我在 DataGrid 的列上的 filter_textboxes 中输入数据时,如何过滤绑定到 WPF DataGrid 的 ObservableCollection?
有没有不使用 codeproject 库的简单解决方案...?
【问题讨论】:
标签: wpf datagrid filter observablecollection
前段时间我问了一个类似的问题,您可能会觉得这很有用:Filter WPF TreeView using MVVM
对于 DataGrid,它应该是一种非常相似的方法。基本上,您想使用 ObservableCollection 创建一个 CollectionViewSource 并将 DataGrid 绑定到它,而不是直接绑定到 ObservableCollection,然后只需在用户键入时设置 CollectionViewSource 的 Filter。
【讨论】:
我有一个非常相似的问题,并且有一个相当简单的解决方案。简而言之:
要将多个过滤器应用于绑定到 WPF DataGrid 的集合,您应该实例化一个 CollectionViewSource 对象作为视图和集合之间的代理(这也适用于其他集合控件)。这样做将允许您将多个过滤器事件处理程序订阅到它的过滤器事件。过滤器按照订阅的顺序应用,并且可以通过取消订阅来移除。
如果您在代码隐藏或 ViewModel 中使用 CollectionViewSource.GetDefaultView() 静态方法,这将返回 ICollectionView 的实例,该实例仅支持具有 Filter 属性的单个过滤器。
你可以在这里找到一个带有源代码的例子http://www.codeproject.com/Articles/442498/Multi-filtered-WPF-DataGrid-with-MVVM
【讨论】: