Class that the provides contextual information on, and access to, items contained in a grid or detail.
All examples in this topic assume that the grid is bound to the
Employees table of the Northwind database, unless stated otherwise.
The following example demonstrates how to provide a default detail configuration that will be applied to all details in a grid and any descendant details for which an explicit detail configuration has not been provided.The following example demonstrates how to retrieve the child contexts of the master data items and collapse any expanded details using the CollapseDetail method.The next example provides the implementation of the button's Click event.The next example provides the implementation of the button's Click event.
<Grid>
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_employees"
Source="{Binding Source={x:Static Application.Current}, Path=Employees}" />
<xcdg:IndexToOddConverter x:Key="rowIndexConverter" />
<Style x:Key="alternatingDataRowStyle"
TargetType="{x:Type xcdg:DataRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},
Path=(xcdg:DataGridVirtualizingPanel.ItemIndex),
Converter={StaticResource rowIndexConverter}}"
Value="True">
<Setter Property="Background"
Value="AliceBlue" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<xcdg:DataGridControl x:Name="EmployeesGrid"
ItemsSource="{Binding Source={StaticResource cvs_employees}}"
ItemsSourceName="Employee Information"
AutoCreateDetailConfigurations="True">
<xcdg:DataGridControl.DefaultDetailConfiguration>
<xcdg:DefaultDetailConfiguration UseDefaultHeadersFooters="False"
ItemContainerStyle="{StaticResource alternatingDataRowStyle}"
xcdg:TableView.ShowFixedColumnSplitter="False">
<xcdg:DefaultDetailConfiguration.DefaultGroupConfiguration>
<xcdg:GroupConfiguration InitiallyExpanded="False" />
</xcdg:DefaultDetailConfiguration.DefaultGroupConfiguration>
<xcdg:DefaultDetailConfiguration.Headers>
<DataTemplate>
<DockPanel>
<xcdg:HierarchicalGroupLevelIndicatorPane xcdg:GroupLevelIndicatorPane.ShowIndicators="False"
xcdg:TableView.CanScrollHorizontally="False"
DockPanel.Dock="Left" />
<ContentPresenter Content="{Binding RelativeSource={RelativeSource Self},
Path=(xcdg:DataGridControl.DataGridContext).SourceDetailConfiguration.Title}"
ContentTemplate="{Binding RelativeSource={RelativeSource Self},
Path=(xcdg:DataGridControl.DataGridContext).SourceDetailConfiguration.TitleTemplate}" />
</DockPanel>
</DataTemplate>
<DataTemplate>
<xcdg:ColumnManagerRow AllowColumnReorder="False"
AllowSort="False" />
</DataTemplate>
</xcdg:DefaultDetailConfiguration.Headers>
<xcdg:DefaultDetailConfiguration.Footers>
<DataTemplate>
<xcdg:InsertionRow Background="Cornsilk" />
</DataTemplate>
</xcdg:DefaultDetailConfiguration.Footers>
<xcdg:DefaultDetailConfiguration.DetailIndicatorStyle>
<Style TargetType="{x:Type xcdg:DetailIndicator}">
<Setter Property="Background"
Value="AliceBlue" />
</Style>
</xcdg:DefaultDetailConfiguration.DetailIndicatorStyle>
</xcdg:DefaultDetailConfiguration>
</xcdg:DataGridControl.DefaultDetailConfiguration>
</xcdg:DataGridControl>
</Grid>
<Grid>
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_employees"
Source="{Binding Source={x:Static Application.Current},
Path=Employees}"/>
</Grid.Resources>
<DockPanel>
<Button Content="Collapse All Details"
Click="Button_Click"
DockPanel.Dock="Top"/>
<xcdg:DataGridControl x:Name="EmployeesGrid"
ItemsSource="{Binding Source={StaticResource cvs_employees}}"
ItemsSourceName="Order Information"
AutoCreateDetailConfigurations="True"/>
</DockPanel>
</Grid>
Private Sub Button_Click( ByVal sender As Object, ByVal e As RoutedEventArgs )
DataGridContext rootContext = DataGridControl.GetDataGridContext( this.EmployeesGrid );
Dim childContexts As New List( Of DataGridContext)( Me.EmployeesGrid.GetChildContexts() )
Dim context As DataGridContext
For Each context In childContexts
context.ParentDataGridContext.CollapseDetails( context.ParentItem )
Next context
End Sub
private void Button_Click( object sender, RoutedEventArgs e )
{
DataGridContext rootContext = DataGridControl.GetDataGridContext( this.EmployeesGrid );
List<DataGridContext> childContexts = new List<DataGridContext>( this.EmployeesGrid.GetChildContexts() );
foreach( DataGridContext context in childContexts )
{
context.ParentDataGridContext.CollapseDetails( context.ParentItem );
}
}