Retrieves the
DataGridContext for the specified
DependencyObject.
Syntax
Parameters
- obj
- A DependencyObject representing the item whose DataGridContext is to be retrieved.
Return Value
A reference to the item's
DataGridContext.
Example
All examples in this topic assume that the grid is bound to the Orders or Employees table of the Northwind database, unless stated otherwise.
The following example demonstrates how to handle the PreviewMouseLeftButtonDown event on the GroupHeaderControl objects contained in the headers of the child groups to toggle the expansion state of child groups using the ToggleGroupExpansion method. The group whose state is to be toggled will be retrieved using the GetParentGroupFromItem method.
| XAML | Copy Code |
|---|
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid"> <Grid.Resources> <xcdg:DataGridCollectionViewSource x:Key="cvs_orders" Source="{Binding Source={x:Static Application.Current}, Path=Orders}"> <xcdg:DataGridCollectionViewSource.GroupDescriptions> <xcdg:DataGridGroupDescription PropertyName="ShipCountry"/> <xcdg:DataGridGroupDescription PropertyName="ShipCity"/> </xcdg:DataGridCollectionViewSource.GroupDescriptions> </xcdg:DataGridCollectionViewSource> <Style TargetType="{x:Type xcdg:GroupHeaderControl}"> <EventSetter Event="PreviewMouseLeftButtonDown" Handler="HeaderDown"/> </Style> </Grid.Resources> <xcdg:DataGridControl x:Name="OrdersGrid" ItemsSource="{Binding Source={StaticResource cvs_orders}}"/> </Grid> |
The following code provides the implementation of the PreviewMouseLeftButtonDown event in which we will retrieve the item represented by the GroupHeaderControl (GroupHeaderFooterItem) using the GetItemFromContainer method, which will then be used to retrieve the parent group (GetParentGroupFromItem) whose state is to be toggled.
| Visual Basic | Copy Code |
|---|
Private Sub HeaderDown( ByVal sender As Object, ByVal e As MouseEventArgs )
Dim headerControl As GroupHeaderControl = TryCast( sender, GroupHeaderControl );
If header Is Nothing Then
Return
End If
Dim context As DataGridContext = DataGridControl.GetDataGridContext( headerControl )
Dim item As Object = context.GetItemFromContainer( headerControl ) )
If Not item Is Nothing Then
Dim group As CollectionViewGroup = context.GetParentGroupFromItem( item )
If Not group Is Nothing
context.ToggleGroupExpansion( group )
End If
End If
End Sub |
The following code provides the implementation of the PreviewMouseLeftButtonDown event in which we will retrieve the item represented by the GroupHeaderControl (GroupHeaderFooterItem) using the GetItemFromContainer method, which will then be used to retrieve the parent group (GetParentGroupFromItem) whose state is to be toggled.
| C# | Copy Code |
|---|
private void HeaderDown( object
sender, MouseEventArgs e )
{
GroupHeaderControl headerControl = sender as GroupHeaderControl;
if( headerControl == null )
return;
DataGridContext context = DataGridControl.GetDataGridContext( headerControl );
object item = context.GetItemFromContainer( headerControl );
if( item != null )
{
CollectionViewGroup group = context.GetParentGroupFromItem( item );
if( group != null )
{
context.ToggleGroupExpansion( group );
}
}
} |
The following example demonstrates how to retrieve the child contexts of the master data items and collapse any expanded details using the CollapseDetail method.
| XAML | Copy 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 Basic | Copy 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 );
}
} |
Requirements
Supported Frameworks: Microsoft .NET Framework version 3.5
See Also