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

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

列的定义类似于:

    

如果我对Field1列进行排序就可以了,如果我对Field2列进行排序并且没有空的Field2对象就可以了,但有时会有并且DataGrid尝试对SubField进行排序(我猜)并且遇到一个空exception:

 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部分” 。 虽然它表示“改善性能”,但它也显示了如何解决您的问题。

希望这可以帮助 :)。