WPF BindingListCollectionView 到 ListCollectionView(数据表作为 ItemsSource)

2024-04-21

我想在具有 DataTable 作为 ItemsSource 的 ListView 上进行自定义排序:

myListView.ItemsSource = (data as DataTable);

这是我的排序函数的第一行:

DataView view = (myListView.ItemsSource as DataTable).DefaultView;

ListCollectionView coll = (ListCollectionView)CollectionViewSource.GetDefaultView(view);

第二行抛出一个异常,例如:

无法将“System.Windows.Data.BindingListCollectionView”转换为“System.Windows.Data.ListCollectionView”

有人有解决办法吗?谢谢 4 个答案


它返回一个 ICollectionView,而不是 ListCollectionView。您很可能需要视图之上的视图来获取 ListCollectionView 所具有的功能。由于 ICollectionView 实现了 CollectionChanged,因此您不会想使用 BindingListCollectionView。

DataView view = (myListView.ItemsSource as DataTable).DefaultView;

ListCollectionView coll = new ListCollectionView(CollectionViewSource.GetDefaultView(view));

尽管替代方案是:

DataView view = (myListView.ItemsSource as DataTable).DefaultView;

BindingListCollectionView coll = new BindingListCollectionView(view);

如果您只想要一种视图。

如果直接绑定到 WPF 控件,最好直接绑定到它而不创建 BindingListCollectionView/ListCollectionView,因为 DefaultView 已经允许对 DataTable 进行排序。

Binding binding = new Binding() { Source = (myListView.ItemsSource as DataTable) };

this.myListView.SetBinding(myListView.ItemsSourceProperty, binding);

DataView view = (myListView.ItemsSource as DataTable).DefaultView;

view.Sort = "Age";

希望有帮助,

塔姆斯·罗伊斯

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF BindingListCollectionView 到 ListCollectionView(数据表作为 ItemsSource) 的相关文章

  • 数据表选择前5行

    您好 有什么方法可以从数据表中选择前 5 行而不进行迭代吗 我认为 你可以使用 LINQ datatable AsEnumerable Take 5
  • 准确理解何时 data.table 是对另一个 data.table 的引用(而不是其副本)

    我在理解传递引用属性时遇到了一些困难data table 有些操作似乎 破坏 了引用 我想确切地了解发生了什么 关于创建一个data table来自另一个data table via lt 然后通过更新新表 原来的表也被改变了 这是预期的
  • 如何在创建后将 VB.NET DataTable 列定义为主键

    我正在使用 VB NET dataAdapter 从 Oracle 数据库导入表 我使用 fill 命令将导入的数据添加到数据集中 在 DataTable 已填充数据后 如何将 DataTable 的特定列定义为 PrimaryKey 只要
  • 选择 data.table 中的列子集

    我想打印数据表的所有列dt除了其中一位名叫V3但不想通过数字而是通过名称来引用它 这是我的代码 dt data table matrix sample c 0 1 5 rep T 50 10 dt 3 with FALSE Is this
  • 如何评估(或创建)r 中 data.table 中的动态列

    我想创建一个新的 data table 或者只是向 data table 添加一些列 指定多个新列很容易 但如果我希望第三列根据我正在创建的列之一计算值 会发生什么情况 我认为 plyr 包可以做这样的事情 我们可以在 data table
  • 使 Primefaces 的数据表行在行版本上无效

    我正在使用 JSF 2 1 Primefaces 5 1 开发一个网络应用程序 我有一个带有行版本的数据表 每行有 2inputText 2 selectOneMenu and 1 selectBooleanCheckbox 我想在单击复选
  • 每天在 R 数据帧上应用 cut()

    我在 R 中有一个数据表 我在其中应用了cut and table 我能够根据条件得到频率表 但我得到了总体频率 我想明智地做到这一点 我有一个名为timestamp其中有时间戳 我还有一个section具有价值的列A or B 如何根据每
  • 使用 rollend 滚动 data.table

    我无法获取roll Inf定义时工作rollends FALSE When rollends未设置或设置为TRUE 我看到了预期的结果 我将不胜感激任何建议 library data table dt1 data table Date se
  • data.table 逐行求和、平均值、最小值、最大值,如 dplyr?

    还有其他关于数据表上的行式运算符的帖子 他们要么是太简单 https stackoverflow com questions 7885147 efficient row wise operations on a data table或解决一
  • 数据表到 JSON [重复]

    这个问题在这里已经有答案了 我最近需要将数据表序列化为 JSON 我现在仍然使用 Net 2 0 因此我无法在 Net 3 5 中使用 JSON 序列化器 我想这肯定是以前做过的 所以我上网查了一下found http www codepr
  • 使用列表列对 data.table 进行分组

    我有一个非常大的问题 循环遍历 data table 来做我想做的事情太慢了 所以我试图绕过循环 假设我有一个 data table 如下 a lt data table i c 1 2 3 j c 2 2 6 k list c a b c
  • R模糊字符串匹配根据匹配的字符串返回特定列

    我有两个大型数据集 一个大约有 50 万条记录 另一个大约有 7 万条记录 这些数据集有地址 我想匹配较小数据集中的任何地址是否存在于大数据集中 正如您所想象的那样 地址可以用不同的方式和不同的情况 拼写等来书写 此外 如果只写到建筑物级别
  • 数据表、计算列

    我正在尝试使用 DataTable 插件在表中创建一列 该列是使用前两列的值计算的 像这样的东西 价格 数量 总计 Price QTY Total 5 2 10 10 3 30 4 1 4 我觉得它应该很简单 但我无法让它发挥作用 这是我试
  • 粘贴两个 data.table 列

    dt lt data table L 1 5 A letters 7 11 B letters 12 16 L A B 1 1 g l 2 2 h m 3 3 i n 4 4 j o 5 5 k p 现在我想粘贴列 A 和 B 以获得一个新
  • data.table:从不存在的列到现有列的“get”失败,静默失败

    gt d lt data table x 1 5 gt d x 6 y get i 9 Error in get i 9 object i 9 not found gt d y 1 add a new column y gt d x 6 y
  • 多个线程将其结果填充到一个 DataTable C# 中

    我刚刚开始学习线程的概念 我有点陷入这个问题 它让我发疯 我实际上需要完成什么 我在本地目录中有大约 300 个文本文件 需要解析它们以获取特定值 在每个文本文件中找到这些 值 后 我需要将它们存储在数据库中 因此 我遵循访问目录中每个文本
  • R data.table fread 使用不带标题的命名 colClasses(例如没有 col.names?)

    更新 2016 年 6 月 col names 已添加到 data table 1 9 6 所以问题已经结束 每个人都非常高兴 我想我现在可以将所有 read csv 调用转换为 fread 调用 而不必担心破坏 原问题 使用数据表1 9
  • 是否有设置可以停止在数据表中显示“表中没有可用数据”?

    最初我的表没有数据 我得到 表中没有可用数据 这是预期的功能 我不想创建任何文本或行 因为我将根据用户操作通过 Ajax 填充表 是否有设置可以停止表中该行的显示 我好像找不到一个此代码有效 但第一行显示 表中没有可用数据 这是 jQuer
  • R Data.Table 创建带有条件的变量

    我需要在下面的数据集中创建一个新变量 A X a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10 The newvar如果X等于 2 5 7 或 9 否则 newvar应该是 0 Code dt1 lt dat
  • R data.table 多个条件连接

    我设计了一种解决方案 用于从两个单独数据表的多个列中查找值 并添加基于新列的值计算 多个条件比较 代码如下 它涉及在计算两个表中的值时使用 data table 和联接 但是 这些表没有联接在我正在比较的列上 因此我怀疑我可能无法获得 da

随机推荐