У меня была DataGrid в C # WPF под VS2010, которая не сортировалась независимо от настроек XAML. По какой-то причине у этой скрытой DataGrid (на дополнительной вкладке) были проблемы с порядком сортировки, когда основной DataGrid был в порядке с аналогичными настройками. В связи с этим мне пришлось схематически отсортировать DataGrid. Вот мои заметки:
Сначала XAML для двух DataGrids (первичного и вторичного, мы будем только сортировать вторую сетку «расширенных имен»:
<TabControl Grid.Row="1" Name="tabControl1" VerticalAlignment="Top" Style="{StaticResource Section}" Margin="3" Padding="0" FontFamily="Arial" FontSize="10" BorderThickness="0" >
<TabItem Name="tabCommon" Style="{StaticResource NameTab}">
<DataGrid Name="grdCommonNames" SelectionChanged="grdCommonNames_SelectionChanged" PreviewKeyDown="grdCommonNames_PreviewKeyDown" Style="{StaticResource NameListGrid}" Focusable="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name, NotifyOnTargetUpdated=True}" Width="SizeToCells" Header="Name" CellStyle="{StaticResource NameListCol}" SortDirection="Ascending" />
<DataGridTextColumn Binding="{Binding Pronunciation, NotifyOnTargetUpdated=True}" Width="SizeToCells" Header="Pronunciation" CellStyle="{StaticResource NameListRightCol}"/>
</DataGrid.Columns>
</DataGrid>
</TabItem>
<TabItem Name="tabExtended" Style="{StaticResource NameTab}">
<DataGrid Name="grdExtendedNames" SelectionChanged="grdCommonNames_SelectionChanged" PreviewKeyDown="grdCommonNames_PreviewKeyDown" Style="{StaticResource NameListGrid}" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name, NotifyOnTargetUpdated=True}" Width="SizeToCells" Header="Name" CellStyle="{StaticResource NameListCol}" SortDirection="Descending" SortMemberPath="Name"/>
<DataGridTextColumn Binding="{Binding Pronunciation, NotifyOnTargetUpdated=True}" Width="SizeToCells" Header="Pronunciation" CellStyle="{StaticResource NameListRightCol}"/>
</DataGrid.Columns>
</DataGrid>
</TabItem>
</TabControl>
Затем фрагмент кода для сортировки второй вкладки Datagrid после щелчка. Мы сортируем только первый раз, поэтому логическое здесь. Таким образом, если они сортируют по другим столбцам вручную, они сохраняются, даже если они возвращаются на первую вкладку и затем повторно посещают 2-ю вкладку.
Здесь наш первый столбец в Datagrid называется «Имя». Фрагмент по щелчку:
if (!extendSorted)
{
SortDescription extSort = new SortDescription("Name", ListSortDirection.Ascending);
grdExtendedNames.Items.SortDescriptions.Add(extSort);
extendSorted = true;
}
Надеюсь, это поможет кому-то еще отсортировать их сетку данных с помощью кода. Большинство других примеров, которые мы нашли, отлично работали для простых установок, но в этой установке с вкладками с двумя сетями данных сортировка была просто неожиданной.