У моего клиента есть это требование:
то есть сетка со складными столбцами. Самый простой способ, который я нашел для этого, - это иметь 3 отдельные сетки данных и 2 кнопки, чтобы показать или свернуть сетки.
Вот соответствующий XAML:
<StackPanel Orientation="Horizontal" Grid.Column="2" Grid.Row="0" VerticalAlignment="Stretch">
<toolkit:DataGridDragDropTarget VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalAlignment="Stretch">
<sdk:DataGrid Name="Grid1" SelectionChanged="Grid_SelectionChanged" AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Binding="{Binding somefield}" Header="someheader" />
<sdk:DataGridTextColumn Binding="{Binding somefield}" Header="someheader" />
<sdk:DataGridTextColumn Binding="{Binding somefield}" Header="someheader"/>
<sdk:DataGridTextColumn Binding="{Binding somefield}" Header="someheader" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</toolkit:DataGridDragDropTarget>
<Button Content=">" Click="Button_Click" Name="btn1" />
<sdk:DataGrid Name="Grid2" SelectionChanged="Grid_SelectionChanged" AutoGenerateColumns="False" ItemsSource="{Binding ItemsSource, ElementName=Grid1}">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="someheader" Binding="{Binding somefield}" />
<sdk:DataGridCheckBoxColumn Header="someheader" Binding="{Binding somefield}" />
<sdk:DataGridCheckBoxColumn Header="someheader" Binding="{Binding somefield}" />
<sdk:DataGridTextColumn Header="someheader" Binding="{Binding somefield}" />
<sdk:DataGridTextColumn Header="someheader" Binding="{Binding somefield}" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<Button Content=">" Name="btn2" Click="Button_Click"/>
<sdk:DataGrid Name="Grid3" SelectionChanged="Grid_SelectionChanged" AutoGenerateColumns="False" ItemsSource="{Binding ItemsSource, ElementName=Grid1}">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="someheader" Binding="{Binding somefield}" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</StackPanel>
Это работает правильно. Моя проблема возникает, когда я хочу отсортировать одну из сеток. Поскольку сортировка является внутренней по отношению к сетке данных, изменения не распространяются на другие (даже если они связаны с одним источником!)
Есть ли способ "распространить" сортировку на другие сетки? Я пытался найти способ перехватить событие сортировки, но его, похоже, не существует ...
Заранее спасибо!