You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为拖拽生成的CollectionViewSource设置ListCollectionView类型?

给CollectionViewSource指定ListCollectionView类型的方法

别担心,这个操作其实挺简单的,我来给你一步步讲清楚怎么弄:

方法一:直接在XAML里设置(推荐)

你的CollectionViewSource是拖拽生成的,大概率在XAML的资源字典里(比如Window.Resources或者UserControl.Resources),直接修改它的定义就行:

  1. 补充命名空间引用:
    ListCollectionView属于System.Windows.Data命名空间,先在XAML根节点(比如Window/UserControl)里添加这个命名空间的引用:

    xmlns:data="clr-namespace:System.Windows.Data;assembly=PresentationFramework"
    

    你已经加了blend和mc的命名空间,直接把这段代码插进去就好。

  2. 给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:24:46