Я пытаюсь реализовать свое первое приложение WPF с использованием шаблона проектирования MVVM.
Я создал приложение, которое привязывает данные к ObservableCollection < > . Приложение отлично отображает, но я ожидаю, что datagrid будет повторно сортировать строки, когда я нажимаю на заголовки столбцов.
Я исследовал сообщения, в которых говорилось: Источник данных должен реализовать IEnumerable, но мой. Мне нужно установить CanUserSortColumns и/или CanUserSort (по каждому столбцу). Я мог бы выполнить пользовательский сортировку, указав функцию обратного вызова Сортировка.
Ничто из этого не помогло. В отладчике функция _customerGrid_Sorting никогда не вызывается, и щелчок на заголовках столбцов не влияет.
Я что-то пропустил в XAML, который следует? Есть ли другой интерфейс, который мне нужно реализовать? Я чувствую себя очень потерянным прямо сейчас, поэтому любая помощь приветствуется.
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>