Ответ 1
Проблема заключается в этом коде
<DataGridTemplateColumn Header="Cust ID" MinWidth="90" CanUserSort="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=CustID}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Сортировка по умолчанию работает, как указано везде, только для DataGridTextColumn, DataGridComboBoxColumn и т.д.
Теперь здесь сетка не знает, как сортировать, потому что вы определили DataTemplate и ярлык внутри него. Некоторые другие люди могли бы определить SstackTemplate и т.д. Внутри DataTemplate. Поэтому DataGrid не будет знать, как его сортировать.
Я постараюсь выслать вам пример кода очень скоро, как то, что мы можем сделать для такого DataGridTemplateColumn. Но надеюсь, что направление, которое я вам дал, помогает!
Кажется, что ответ очень прост. Я попробовал это с образцом DataGrid с использованием MVVM, но мое решение должно работать для вас, я чувствую
В нижней части DataGridTemplateColumn все в порядке, но вам не хватает очень важного атрибута SortMemberPath. ThW WPF должен знать, на какой собственности он должен сортироваться.
Оригинал, который вы разместили, выглядит следующим образом
<DataGridTemplateColumn Header="Name" MinWidth="300" CanUserSort="True" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=Name}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Я не знаю ваших структур данных. Но модифицированный должен выглядеть так:
<DataGridTemplateColumn SortMemberPath="Name" Header="Name" MinWidth="300" CanUserSort="True" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=Name}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Надеюсь, это поможет вам! Дайте мне знать, если это вам не поможет, я попытаюсь опубликовать свое приложение в каком-нибудь блоге (я ленив, чтобы сделать это, хотя!)