J'ai une base de données WPF que j'utilise avec un certain nombre de colonnes. Une des colonnes a quelques éléments qui sont parfois NULL et cela provoque une exception quand j'essaye de trier sur cette colonne.WPF Datagrid trier sur une colonne avec des éléments NULL
Les définitions des colonnes est quelque chose comme:
<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>
Si je sorte sur la colonne Champ1 il est très bien, si je tri sur la colonne Champ2 et il n'y a pas nul objets Champ2 il est très bien, mais parfois il sont et DataGrid essaie de trier sur le sous-champ (je suppose) et frappe une exception nulle:
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.
J'ai essayé d'installer SortMemberPath à « MyObject.Field2.SubField » mais bien sûr, cela ne résout pas depuis Le champ 2 est toujours parfois nul. Je me suis posé la question d'essayer d'utiliser un convertisseur où j'ai défini SortMemberPath et que ce convertisseur retourne string.empty pour tous les éléments NULL mais n'a pas réussi à le faire fonctionner.
J'ai également essayé d'ajouter "TargetNullValue = {x: Static sys: String.Empty}" dans la liaison de ces colonnes mais cela ne fonctionnait toujours pas.
Des conseils/suggestions seraient les bienvenus. Merci, Will
Vous pouvez simplement vous assurer que votre objet n'est jamais nul à l'aide d'un convertisseur ou simplement l'instancier (s'il est nul) lorsque vous obtenez les données pour la grille de données. –