Selects the appropriate group configuration based on the specified information.
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.
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>
The following code provides the implementation of the ItemCountGroupConfigurationSelector.
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.
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;
}
}
}
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