如何为拖拽生成的CollectionViewSource设置ListCollectionView类型?
给CollectionViewSource指定ListCollectionView类型的方法
别担心,这个操作其实挺简单的,我来给你一步步讲清楚怎么弄:
方法一:直接在XAML里设置(推荐)
你的CollectionViewSource是拖拽生成的,大概率在XAML的资源字典里(比如Window.Resources或者UserControl.Resources),直接修改它的定义就行:
补充命名空间引用:
ListCollectionView属于System.Windows.Data命名空间,先在XAML根节点(比如Window/UserControl)里添加这个命名空间的引用:xmlns:data="clr-namespace:System.Windows.Data;assembly=PresentationFramework"你已经加了blend和mc的命名空间,直接把这段代码插进去就好。
给CollectionViewSource添加属性:
找到拖拽生成的那个CollectionViewSource,给它加上CollectionViewType属性,指定为ListCollectionView:<CollectionViewSource x:Key="YourTableNameViewSource" Source="{Binding YourTableName, Source={StaticResource YourDataSetInstance}}" CollectionViewType="{x:Type data:ListCollectionView}" />记得把
YourTableNameViewSource、YourTableName、YourDataSetInstance换成你项目里实际的名称。
方法二:在代码后台设置
如果XAML里操作遇到问题,也可以在后台代码里手动指定:
// 先获取到你的CollectionViewSource实例 var cvs = (CollectionViewSource)this.Resources["YourTableNameViewSource"]; // 指定视图类型 cvs.CollectionViewType = typeof(ListCollectionView); // 或者更直接,直接创建ListCollectionView并赋值给Source var yourListCollectionView = new ListCollectionView(yourDataSet.YourTableName); cvs.Source = yourListCollectionView;
小提醒
- 拖拽生成的CollectionViewSource默认会用系统默认的视图类型(比如DataSet的DataTable默认是BindingListCollectionView),设置
CollectionViewType后,当Source绑定完成时,会自动创建你指定的ListCollectionView实例。 - 确保你的项目引用了
PresentationFramework程序集(一般WPF项目默认都包含,要是没有的话手动添加引用即可)。
内容的提问来源于stack exchange,提问作者Edgar
相关产品推荐
相关产品推荐

