Xceed DataGrid for WPF v7.2 Documentation
SelectGroupConfiguration Method (GroupConfigurationSelector)
Example 


Xceed.Wpf.DataGrid Assembly > Xceed.Wpf.DataGrid Namespace > GroupConfigurationSelector Class : SelectGroupConfiguration Method
The zero-based level of the group.

The CollectionViewGroup that represents the group. Can be a null reference (Nothing in Visual Basic) if an item located in the headers or footers of a grid queries the selector for a group configuration (see Remarks).

The GroupDescription from which the group was created.
Selects the appropriate group configuration based on the specified information.
Syntax
'Declaration
 
Public Overridable Function SelectGroupConfiguration( _
   ByVal groupLevel As Integer, _
   ByVal collectionViewGroup As CollectionViewGroup, _
   ByVal groupDescription As GroupDescription _
) As GroupConfiguration
'Usage
 
Dim instance As GroupConfigurationSelector
Dim groupLevel As Integer
Dim collectionViewGroup As CollectionViewGroup
Dim groupDescription As GroupDescription
Dim value As GroupConfiguration
 
value = instance.SelectGroupConfiguration(groupLevel, collectionViewGroup, groupDescription)
public virtual GroupConfiguration SelectGroupConfiguration( 
   int groupLevel,
   CollectionViewGroup collectionViewGroup,
   GroupDescription groupDescription
)

Parameters

groupLevel
The zero-based level of the group.
collectionViewGroup

The CollectionViewGroup that represents the group. Can be a null reference (Nothing in Visual Basic) if an item located in the headers or footers of a grid queries the selector for a group configuration (see Remarks).

groupDescription
The GroupDescription from which the group was created.

Return Value

The GroupConfiguration that will be applied to the group. Can be a null reference (Nothing in Visual Basic) if the selector does not have a group configuration that corresponds to the specified information.
Remarks

When a grid is in a table-view layout, rows located in the headers, footers, fixed headers, and fixed footers of a grid (e.g., ColumnManagerRows, InsertionRows) will query the selector in order to retrieve the GroupLevelIndicatorStyle of the appropriate group configuration. In this case, collectionViewGroup will be a null reference (Nothing in Visual Basic). If the selector chooses group configurations based on the specified collectionViewGroup, a "dummy" group configuration that provides an identical group-level-indicator style should be returned. For example, if a group configuration sets the width of its group-level indicator to 30, the "dummy" group configuration should also return 30 in its group-level-indicator style so that the items in the headers and footers have the same indentation as the other items to preserve cell alignment.

It is recommended that all group-level-indicator styles return the same width to preserve the alignment of the cells throught the grid.

Example
All examples in this topic assume that the grid is bound to the Orders table of the Northwind database, unless stated otherwise.
The following example demonstrates how to create a custom group-configuration selector that will return the appropriate group configuration depending on the number of items in a group. The implementation of the ItemCountGroupConfigurationSelector is provided below.
<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="ShipCity" />
      </xcdg:DataGridCollectionViewSource.GroupDescriptions>
    </xcdg:DataGridCollectionViewSource>
  </Grid.Resources>
  <xcdg:DataGridControl x:Name="OrdersGrid"
                        ItemsSource="{Binding Source={StaticResource cvs_orders}}">

    <xcdg:DataGridControl.GroupConfigurationSelector>
      <local:ItemCountGroupConfigurationSelector MinItemCount="10" />
    </xcdg:DataGridControl.GroupConfigurationSelector>
  </xcdg:DataGridControl>
</Grid>
Public Class ItemCountGroupConfigurationSelector
               Inherits GroupConfigurationSelector
    Public Sub New
    End Sub
    Public Overrides Function SelectGroupConfiguration( ByVal groupLevel As Integer, _
                    ByVal collectionViewGroup As System.Windows.Data.CollectionViewGroup, _
                    ByVal groupDescription As System.ComponentModel.GroupDescription ) As GroupConfiguration

      If collectionViewGroup Is Nothing Then
        Return MyBase.SelectGroupConfiguration( groupLevel, collectionViewGroup, groupDescription )
      End If
      Dim groupConfiguration As New GroupConfiguration()
      Dim style As New Style( GetType( Xceed.Wpf.DataGrid.DataRow ) )

      If collectionViewGroup.ItemCount <= m_minItemCount Then ' red
        style.Setters.Add( New Setter( DataRow.BackgroundProperty, Brushes.Red ) )
      Else ' green
        style.Setters.Add( New Setter( DataRow.BackgroundProperty, Brushes.LightGreen ) )
      End If
      groupConfiguration.ItemContainerStyle = style
      Return groupConfiguration
    End Function
    Private m_minItemCount As Integer = 0
    Public Property MinItemCount As Integer
      Get
        Return m_minItemCount
      End Get
      Set
        m_minItemCount = value
    End Property
  End Class
public class ItemCountGroupConfigurationSelector : GroupConfigurationSelector
  {
    public ItemCountGroupConfigurationSelector()
    {
    } 
   public override GroupConfiguration SelectGroupConfiguration( int groupLevel,
                   System.Windows.Data.CollectionViewGroup collectionViewGroup,
                   System.ComponentModel.GroupDescription groupDescription )
   {
     if( collectionViewGroup == null )
       return base.SelectGroupConfiguration( groupLevel, collectionViewGroup, groupDescription );
     GroupConfiguration groupConfiguration = new GroupConfiguration();
     Style style = new Style( typeof( Xceed.Wpf.DataGrid.DataRow ) );

     if( collectionViewGroup.ItemCount <= m_minItemCount ) // red
     {
       style.Setters.Add( new Setter( DataRow.BackgroundProperty, Brushes.Red ) );       
     }
     else // green
     {
       style.Setters.Add( new Setter( DataRow.BackgroundProperty, Brushes.LightGreen ) );       
     }
     groupConfiguration.ItemContainerStyle = style;
     return groupConfiguration;
   }
    private int m_minItemCount = 0;
    public int MinItemCount
    {
      get
      {
        return m_minItemCount;
      }
      set
      {
        if( value != m_minItemCount )
          m_minItemCount = value;
      }
    }
  }
Requirements

Target Platforms: Windows 11, Windows, 10, Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

GroupConfigurationSelector Class
GroupConfigurationSelector Members