【发布时间】:2010-12-11 09:01:45
【问题描述】:
我有一个 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 列上排序并且没有空 Field2 对象很好,但有时有并且 DataGrid 尝试在子字段上排序(我猜)并点击空异常:
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 的转换器并让该转换器为任何空元素返回 string.empty 但无法使其工作。
我还尝试在这些列的绑定中添加“TargetNullValue={x:Static sys:String.Empty}”,但它仍然不起作用。
任何意见/建议将不胜感激。 谢谢, 会
【问题讨论】:
-
您可以通过使用转换器确保您的对象永远不会为空,或者在获取数据网格的数据时实例化它(如果它为空)。
标签: c# .net wpf sorting datagrid