Xceed DataGrid for WPF v7.3 Documentation
Xceed.Wpf.DataGrid Assembly / Xceed.Wpf.DataGrid Namespace / GroupConfigurationSelector Class
Members Example


In This Topic
    GroupConfigurationSelector Class
    In This Topic
    Represents a group-configuration selector that selects the appropriate group configuration for a group.
    Syntax
    'Declaration
     
    Public MustInherit Class GroupConfigurationSelector 
    'Usage
     
    Dim instance As GroupConfigurationSelector
    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.
    <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;
          }
        }
      }
    Inheritance Hierarchy
    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