繁体   English   中英

WPF Datagrid对具有null元素的列进行排序

[英]WPF Datagrid sort on column with null elements

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

列的定义如下:

<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列进行排序并且没有空的Field2对象就可以了,但有时会有并且DataGrid尝试对SubField进行排序(我猜)并且遇到一个空异常:

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有时仍然为null。 我想知道尝试使用转换器,我设置SortMemberPath并让转换器返回string.empty为任何null元素,但无法让它工作。

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

任何意见/建议将非常感谢。 谢谢,威尔

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

而是使用ListCollectionView类的CustomSort属性。 有关更多详细信息,请阅读“改进Microsoft DataGrid CTP排序性能”“改进Microsoft DataGrid CTP排序性能 - 第2部分” 虽然它表示“改善性能”,但它也显示了如何解决您的问题。

希望这可以帮助 :)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM