WPF4 Datagrid ne pas trier les en-têtes de colonne
Je suis en train de mettre en œuvre ma première application WPF à l'aide d'un design pattern MVVM.
J'ai créé une application qui est de la liaison de données à une ObservableCollection<>. L'application rend bien, mais j'attends la grille de données pour re-trier les lignes quand je clique sur les en-têtes de colonne.
J'ai recherché des postes qui dit:
La source de données pour mettre en œuvre IEnumerable, la mienne.
J'ai besoin de CanUserSortColumns et/ou CanUserSort (sur chaque colonne), je l'ai fait.
J'ai pu mettre en œuvre un tri personnalisé en spécifiant le Tri fonction de rappel, je l'ai fait.
Aucune de ces semblent avoir contribué. Dans le débogueur, mon _customerGrid_Sorting fonction n'est jamais appelée, et en cliquant sur les en-têtes de colonne n'a aucun effet.
Ai-je raté quelque chose dans le XAML qui suit? Est-il une autre interface que j'ai besoin pour mettre en œuvre? Je me sens perdu dès maintenant, de sorte que toute aide est très appréciée.
XAML:
<DataGrid Name="_customerGrid"
AutoGenerateColumns="False"
CanUserSortColumns="True"
ColumnHeaderStyle="{StaticResource columnHeaderStyle}"
HorizontalAlignment="Left"
ItemsSource="{Binding Path=AllCustomers}"
RowDetailsVisibilityMode="VisibleWhenSelected"
RowStyle="{StaticResource DataGridRowStyle}"
SelectionUnit="FullRow"
Sorting="_customerGrid_Sorting"
VerticalAlignment="Top">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Cust ID" MinWidth="90" CanUserSort="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=CustID}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Name" MinWidth="300" CanUserSort="True" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=Name}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
source d'informationauteur Paul Chavez
Vous devez vous connecter pour publier un commentaire.
Le problème est que ce code
Le tri par défaut fonctionne comme il est indiqué partout que pour DataGridTextColumn, DataGridComboBoxColumn,etc.
Maintenant, voici la grille de ne pas savoir comment trier car vous avez défini un DataTemplate et une Étiquette à l'intérieur. Une autre personne pourrait avoir définit un SstackTemplate, etc à l'intérieur de DataTemplate. Donc, le contrôle DataGrid ne savent pas comment faire le tri.
Je vais essayer de vous poster un exemple de code très rapidement ce que nous pouvons faire pour ces DataGridTemplateColumn. Mais espérons que la direction que je vous ai donné l'aide!!
Semble que la réponse est très simple. Je l'ai essayé avec un exemple de grille de données en utilisant MVVM mais ma solution qui devrait fonctionner pour vous, je sens
Tout est bien dans le ci-dessous DataGridTemplateColumn mais il vous manque un attribut très important appelé SortMemberPath. Thw WPF devez savoir sur la propriété de qui il doit de tri.
L'original qui vous posté ressemble à ceci
Je ne sais pas vos structures de données. Mais la modification de l'un devrait ressembler à ceci
J'espère que cela vous aide!! Laissez-moi savoir si ce n'est pas vous aider, je vais essayer de poster ma demande dans certains blog ( je suis paresseux pour le faire quand même!!!)
Essayez celui-ci: SortMemberPath="Complète"