У моего клиента есть это требование: т. Е. Сетка со складными колоннами. Самый простой способ, который я нашел, состоит в том, чтобы иметь 3 отдельных datagrids и 2 кнопки, отображая или сворачивая решетки.Примените сортировку datagrid к другому datagrid
Вот ассоциированная 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>
Это работает правильно. Моя проблема возникает, когда я хочу сортировать одну из сетки. Поскольку сортировка является внутренней для datagrid, изменения не распространяются на другие (даже жесткие они связаны с одним и тем же источником!).
Есть ли способ «развести» сортировку на другие решетки? Я попытался найти способ перехватить событие сортировки, но он, похоже, не существует ...
Заранее благодарен!
Вопрос о Silverlight. –
По-прежнему считаю, что лучше использовать 1 datagrid и изменить видимость столбцов. Это избавит вас от проблем с поиском сортировки вашего datagrid, так как невозможно применить сортировку к datagrid программно, если вы не отсортируете источник привязки. Таким образом, невозможно изменить событие в сортировке данных, так как невозможно применить сортировку с помощью C#/silverlight (привязка) к datacolumn. (Опять же, если не сделано для источника данных) –
Хорошо спасибо, спецификации изменились, и кнопки внутри Grid исчезли, и вместо этого они предлагают то, что вы сказали (единственная кнопка, которая скрывает/показывает дополнительные столбцы). В любом случае, спасибо за это :-) – Shimrod