如何使用WPF c#和xaml过滤.NET3.5SP1中的数据表视图?

如何使用WPF c#和xaml过滤.NET3.5SP1中的数据表视图?,wpf,.net-3.5,datatable,filter,view,Wpf,.net 3.5,Datatable,Filter,View,我找到了MSDN示例代码,用于获取集合的默认视图并向视图中添加过滤器,但大部分代码都是针对.Net 4.0的。我所在的团队目前没有切换到4.0,所以我没有这个选择。我发现的所有示例都没有使用DataTable作为源,因此我不得不对其进行一些修改。我使用DataTable是因为数据是从DB提交的,很容易填充。在尝试实现MSDN示例之后,当我尝试设置过滤器时,会得到一个“NotSupportedException”。这是我的c代码: 受保护的数据表_data=new DataTable() 受保护的

我找到了MSDN示例代码,用于获取集合的默认视图并向视图中添加过滤器,但大部分代码都是针对.Net 4.0的。我所在的团队目前没有切换到4.0,所以我没有这个选择。我发现的所有示例都没有使用DataTable作为源,因此我不得不对其进行一些修改。我使用DataTable是因为数据是从DB提交的,很容易填充。在尝试实现MSDN示例之后,当我尝试设置过滤器时,会得到一个“NotSupportedException”。这是我的c代码:

受保护的数据表_data=new DataTable()
受保护的BindingListCollectionView\u filteredDataView

加载时的私有无效(对象发送方、路由目标方)
{
_filteredDataView=(BindingListCollectionView)CollectionViewSource.GetDefaultView(_数据); _filteredDataView.Filter=新谓词(MatchesCurrentSelections);//抛出NotSupportedException
}

公共布尔匹配当前选择(对象o){…}

BindingListCollectionView似乎不支持.NET3.5中的筛选,或者它不适用于DataTable。我研究了在XAML中而不是在C#代码中设置它,但是XAML示例使用资源中的集合而不是作为类成员的集合,所以我不知道如何设置它。有人知道如何将视图过滤到数据表吗

编辑


不久前我不再研究这个问题,我想我会更新我的问题。我无法让内置的过滤功能正常工作。似乎使用.NET4.0会容易得多。每次所需的过滤更改时,我都会使用不同的条件重新查询数据。在我的应用程序环境中,这种方法运行良好,速度非常快。

BindingListCollectionView不支持筛选或排序。使用
CollectionViewSource
创建一个同时支持这两者的
ListCollectionView
实例。

我刚才停止研究这个问题,我想我应该更新我的问题。我无法让内置的过滤功能正常工作。似乎使用.NET4.0会容易得多。每次所需的过滤更改时,我都会使用不同的条件重新查询数据。在我的应用程序环境中,这种方法运行良好,速度非常快。

您能举一个例子,说明视图后面的集合是成员属性吗?我发现的唯一使用CollectionViewSource的示例是在XAML中,该视图针对的是一个集合,它是一个静态资源,而不是一个属性。请检查在哪里可以找到您要查找的代码(只需删除排序,添加筛选)。除此之外,您不应该仅仅因为集合是一种资源就放弃XAML。您仍然可以在XAML中愉快地将所有内容组合在一起。但是如果你更喜欢代码,你有两种选择。引用的帖子没有帮助。我放弃了WPF的过滤,至少在我们切换到.NET4.0之前是这样。请参阅我的编辑。