DataGridContext Class
See Also  Members   Example 
Xceed.Wpf.DataGrid Assembly > Xceed.Wpf.DataGrid Namespace : DataGridContext Class

Class that the provides contextual information on, and access to, items contained in a grid or detail.

Object Model









Syntax

Visual Basic (Declaration) 
Public NotInheritable Class DataGridContext 
   Inherits DependencyObject
   Implements ICustomTypeDescriptorINotifyPropertyChangedIWeakEventListener, IDataGridContextVisitable 
C# 
public sealed class DataGridContext : DependencyObject, ICustomTypeDescriptorINotifyPropertyChangedIWeakEventListener, IDataGridContextVisitable  

Example

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.
XAMLCopy Code
<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>
The following example demonstrates how to retrieve the child contexts of the master data items and collapse any expanded details using the CollapseDetail method.
XAMLCopy Code
<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>
The next example provides the implementation of the button's Click event.
Visual BasicCopy Code
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
The next example provides the implementation of the button's Click event.
C#Copy Code
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 );
}     
}

Remarks

The data-grid context of a grid always exists; however, detail contexts are created and exist only when they are expanded and will be destroyed when a detail is collapsed. A data-grid context's HasDetails property can be queried to determine if it has details; however, it does not indicate whether the details are expanded and consequently have a context. To know if the details of a specific data item are expanded and therefore have a context, the AreDetailsExpanded method can be used.

Inheritance Hierarchy

System.Object
   System.Windows.Threading.DispatcherObject
      System.Windows.DependencyObject
         Xceed.Wpf.DataGrid.DataGridContext

Requirements

Supported Operating Systems: Windows Server 2003 Service Pack 1; Windows Vista; Windows XP Service Pack 2

See Also