WPF Datagrid 对包含 null 元素的列进行排序

2023-11-26

我有一个 WPF 数据网格,正在使用多个列。其中一列的一些元素有时为空,当我尝试对此列进行排序时,这会导致异常。

列的定义类似于:

<dg:DataGrid.Columns>
  <dg:DataGridTextColumn Binding="{Binding MyObject.Field1}" Header="Field1" Width="Auto" />
  <dg:DataGridTextColumn Binding="{Binding MyObject.Field2.SubField}" Header="Field2" Width="Auto" />
</dg:DataGrid.Columns>

如果我在 Field1 列上排序,那就没问题,如果我在 Field2 列上排序,并且没有 null Field2 对象,那就没问题,但有时有,并且 DataGrid 尝试在 SubField 上排序(我猜)并遇到 null 异常:

System.InvalidOperationException was unhandled
  Message=The SortDescriptions added are not valid. The probable solutions are to set the CanUserSort on the Column to false, or to use SortMemberPath property on the Column, or to handle the Sorting event on DataGrid.

我尝试将 SortMemberPath 设置为“MyObject.Field2.SubField”,但这当然不能解决问题,因为 Field2 有时仍然为空。我想知道是否尝试使用转换器,在其中设置 SortMemberPath 并让该转换器为任何 null 元素返回 string.empty 但无法使其工作。

我还尝试在这些列的绑定中添加“TargetNullValue={x:Static sys:String.Empty}”,但它仍然不起作用。

任何意见/建议将不胜感激。 谢谢, 将要


一般建议是:不要使用 SortMemberPath。不仅仅是因为您刚刚遇到的问题。但也因为它们超慢。

而是使用 ListCollectionView 类的 CustomSort 属性。欲了解更多详细信息,请阅读“提高 Microsoft DataGrid CTP 排序性能” and “提高 Microsoft DataGrid CTP 排序性能 - 第 2 部分”。虽然它说“提高性能”,但它也展示了如何解决您的问题。

希望这可以帮助 :)。

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

WPF Datagrid 对包含 null 元素的列进行排序 的相关文章

随机推荐

  • WPF 组合框绑定

    我有两个组合框 它们都与相同的源绑定
  • 如何重新加载 Rails 3 中的所有 gem?

    有没有办法在不完全重新启动服务器的情况下重新加载 Rails 应用程序中的所有 gem 我有一个 Gemfile 使用 path引用我在同一系统上开发的依赖项 并且必须杀死该应用程序并执行此操作很烦人rails s每次我保存更改时都会再次出
  • VB.NET 和 sizeof

    我正在将一些代码从 C 转换为 VB NET 我在 C 中有以下行 var bytes new byte password Length sizeof char 看着MSDN看来VB NET似乎没有sizeof操作员 我明白有一个Marsh
  • 在 Android 1.5 + 上访问视频和照片

    因此 我尝试允许用户使用此处描述的方法通过我的 Android 应用程序选择特定的媒体 从我的 Android 应用程序中的图片应用程序访问图片 它工作得很好 除了这样一个事实 我似乎只能在视频或照片之间进行选择来向用户展示 而不能同时选择
  • Clojure:列出在命名空间内实现某些协议的所有定义类型

    我有一个协议和几个在一个工作区中实现它的定义类型 如何列出实现以下协议的所有定义类型 我已经找到了从 ns public 过滤数据的解决方案 但我不喜欢它 因为它使用了一些 魔法 来完成工作 因为我还没有找到实现我的目标的正确方法和满足吗
  • 类型“System.Data.Linq.DataContext”是在未引用的程序集中定义的

    问题 转到特定页面时出错 在本地调试中 CS0012 类型 System Data Linq DataContext 是在未引用的程序集中定义的 您必须添加对程序集 System Data Linq Version 4 0 0 0 Cult
  • 长宽比错误的 iTunes Connect 屏幕截图

    在模拟器中拍摄了每种尺寸的屏幕截图 我仅在 4 7 英寸 iphone 6 和 5 5 英寸 iphone 6 Plus 屏幕截图上遇到问题 4 英寸和 3 5 英寸上传没有问题 错误状态 一张或多张屏幕截图的宽高比不正确 有关更多信息 请
  • 预处理器计数器宏

    有没有办法创建一个COUNTER 扩展为每次加一的数字的宏 遵循 C 11 14 标准 COUNTER 被调用 我想过 但找不到让它发挥作用的方法 我没有找到一种方法来存储 状态 COUNTER macro Example define C
  • 查看链接服务器依赖关系sql server 2008

    有谁知道如何 是否可以查看依赖于 Sql Server 2008 中链接服务器的所有表 视图 存储过程 基本上就像链接服务器可以访问上下文菜单 查看依赖项 一样 非常感谢任何帮助 Thanks 搜索它 SELECT OBJECT NAME
  • is_file 与 file_exists 的性能以及 PHP 中的缓存?

    我做了一些测试来比较和测量这两个函数的速度 is file似乎比这快几倍 我都使用了 10000 次迭代 文件已存在 我想知道 PHP 或操作系统是否为这些功能使用一些缓存 或者总是访问 HDD 我想不会 但我想知道 我使用了这段代码
  • Google CoLab - 如何运行 CoLab 环境“文件”选项卡(即 /content/)中的 jupyter 笔记本文件

    在 Google CoLab 中 左侧是一个可以打开的窗格 其中显示Table of Contents Code snippets and Files 在里面Files窗格中有一个上传按钮 我可以将笔记本文件上传到此Files区域 但是 一
  • 如何在 MATLAB 中将两个图例添加到单个图中?

    我想在 MATLAB 中的绘图中添加两个图例 我怎样才能做到这一点 您可以创建第二个叠加轴 并带有自己的图例 当然在不同的位置 EDIT 这是一个简单的例子 create some plot with a legend hAx 1 axes
  • 返回一行中正则表达式搜索的第二个实例

    我有一个文件 其中包含特定的感兴趣行 例如第 12 行 如下所示 conform 244216 packets exceed 267093 packets 我编写了一个脚本来通过正则表达式提取第一个数字并将该值转储到新文件中 getexce
  • 如何使用 Phonegap 打开 Twitter 和 Facebook 应用程序?

    我正在尝试使用我的 PhoneGap 应用程序链接来打开 Twitter 应用程序中的特定用户个人资料页面 我知道并不是每个人的设备上都安装了 Twitter 应用程序 所以如果他们没有安装 我想将他们发送到 Play 商店下载 问题是 每
  • Python 字典中键的多个值

    我想做的是将键中的 3 个值获取到单独的变量中 目前我正在这样做 for key in names posX names key 0 posY names key 1 posZ names key 2 尽管它有效 但对我来说似乎不太直观 我
  • Rapidjson 提取键和值

    我试图提取数组中对象的键和值 但找不到正确的 getter for Value ConstValueIterator itr document params Begin itr document params End itr for Val
  • 我应该考虑 memmove() O(n) 还是 O(1)?

    这可能是一个愚蠢的问题 但我想计算我的一种算法的复杂性 并且我不确定要考虑什么复杂性内存移动 功能 你能帮忙 解释一下吗 void memmove void destination const void source size t num
  • Angular:如何使链接跳转到同一页面中的某些部分

    我想要一个锚链接使用 id 标签跳转到同一页面中的特定部分 这是我的html div class nav container ul class nav text center li class active a href account s
  • JDK8中ConcurrentHashmap代码解释

    我一直在尝试理解 JDK8 中的 ConcurrentHashMap 函数 与 JDK7 中的函数相反 除了源代码之外 还可以找到一些好人 例如 Richard 对其进行了很好的解释http www burnison ca articles
  • WPF Datagrid 对包含 null 元素的列进行排序

    我有一个 WPF 数据网格 正在使用多个列 其中一列的一些元素有时为空 当我尝试对此列进行排序时 这会导致异常 列的定义类似于