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

Represents a group-configuration selector that selects the appropriate group configuration for a group.

Syntax

Visual Basic (Declaration) 
Public MustInherit Class GroupConfigurationSelector 
C# 
public abstract class GroupConfigurationSelector 

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.
XAMLCopy 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="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>
The following code provides the implementation of the ItemCountGroupConfigurationSelector.
Visual BasicCopy Code
  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
The following code provides the implementation of the ItemCountGroupConfigurationSelector.
C#Copy Code
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;
     }
   }
 }

Inheritance Hierarchy

Requirements

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

See Also