Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

ItemsControl.GroupStyle Property

Definition

Namespace:
System.Windows.Controls
Assembly:
PresentationFramework.dll

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Gets a collection of GroupStyle objects that define the appearance of each level of groups.

public:
 property System::Collections::ObjectModel::ObservableCollection<System::Windows::Controls::GroupStyle ^> ^ GroupStyle { System::Collections::ObjectModel::ObservableCollection<System::Windows::Controls::GroupStyle ^> ^ get(); };
public System.Collections.ObjectModel.ObservableCollection<System.Windows.Controls.GroupStyle> GroupStyle { get; }
member this.GroupStyle : System.Collections.ObjectModel.ObservableCollection<System.Windows.Controls.GroupStyle>
Public ReadOnly Property GroupStyle As ObservableCollection(Of GroupStyle)

Property Value

A collection of GroupStyle objects that define the appearance of each level of groups.

Examples

The following examples show an ItemsControl that is bound to an XmlDataProvider and the code-behind content that contains the logic to add and remove grouping. When the check box is checked, the content of the ItemsControl is grouped by the Type attribute.

Each group is of type CollectionViewGroup. The GroupStyle HeaderTemplate is specified so that it appears as a TextBlock that displays the Name of each the group. In this case, the Name is either Work or Home.

<Window x:Class="GroupingSample.Window1"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 Title="Grouping Sample"
 Width="220" Height="550">
 <StackPanel>

 <StackPanel.Resources>
 <XmlDataProvider x:Key="myTasks" XPath="Tasks/Task">
 <x:XData>
 <Tasks xmlns="">
 <Task Name="Groceries" Priority="2" Type="Home">
 <Description>Pick up Groceries and Detergent</Description>
 </Task>
 <Task Name="Laundry" Priority="2" Type="Home">
 <Description>Do Laundry</Description>
 </Task>
 <Task Name="Email" Priority="1" Type="Work">
 <Description>Email Clients</Description>
 </Task>
 <Task Name="Clean" Priority="3" Type="Work">
 <Description>Clean my office</Description>
 </Task>
 <Task Name="Dinner" Priority="1" Type="Home">
 <Description>Get ready for family reunion</Description>
 </Task>
 <Task Name="Proposals" Priority="2" Type="Work">
 <Description>Review new budget proposals</Description>
 </Task>
 </Tasks>
 </x:XData>
 </XmlDataProvider>
 </StackPanel.Resources>

 <TextBlock Margin="12,5,5,0" FontSize="20" Text="My Task List"/>
 <CheckBox Margin="10,5,5,10" Checked="AddGrouping"
 Unchecked="RemoveGrouping">Group by task type</CheckBox>
 <ItemsControl Margin="10" Name="myItemsControl"
 ItemsSource="{Binding Source={StaticResource myTasks}}">
 <ItemsControl.ItemTemplate>
 <DataTemplate>
 <DataTemplate.Resources>
 <Style TargetType="TextBlock">
 <Setter Property="FontSize" Value="18"/>
 <Setter Property="HorizontalAlignment" Value="Center"/>
 </Style>
 </DataTemplate.Resources>
 <Grid>
 <Ellipse Fill="Silver"/>
 <StackPanel>
 <TextBlock Margin="3,3,3,0"
 Text="{Binding XPath=@Name}"/>
 <TextBlock Margin="3,0,3,7"
 Text="{Binding XPath=@Priority}"/>
 </StackPanel>
 </Grid>
 </DataTemplate>
 </ItemsControl.ItemTemplate>
 <ItemsControl.ItemContainerStyle>
 <Style>
 <Setter Property="Control.Width" Value="100"/>
 <Setter Property="Control.Margin" Value="5"/>
 </Style>
 </ItemsControl.ItemContainerStyle>
 <ItemsControl.GroupStyle>
 <GroupStyle>
 <GroupStyle.HeaderTemplate>
 <DataTemplate>
 <TextBlock FontWeight="Bold" FontSize="15"
 Text="{Binding Path=Name}"/>
 </DataTemplate>
 </GroupStyle.HeaderTemplate>
 </GroupStyle>
 </ItemsControl.GroupStyle>
 </ItemsControl>
 </StackPanel>
</Window>
using System;
using System.Windows;
using System.Windows.Data;

namespace GroupingSample
{
 public partial class Window1 : System.Windows.Window
 {

 public Window1()
 {
 InitializeComponent();
 }

 CollectionView myView;
 private void AddGrouping(object sender, RoutedEventArgs e)
 {
 myView = (CollectionView)CollectionViewSource.GetDefaultView(myItemsControl.ItemsSource);
 if (myView.CanGroup)
 {
 PropertyGroupDescription groupDescription
 = new PropertyGroupDescription("@Type");
 myView.GroupDescriptions.Add(groupDescription);
 }
 else
 {
 return;
 }
 }

 private void RemoveGrouping(object sender, RoutedEventArgs e)
 {
 myView = (CollectionView)CollectionViewSource.GetDefaultView(myItemsControl.ItemsSource);
 myView.GroupDescriptions.Clear();
 }
 }
}

Imports System.Windows
Imports System.Windows.Data

Namespace GroupingSample
 Partial Public Class Window1
 Inherits System.Windows.Window

 Public Sub New()
 InitializeComponent()
 End Sub

 Private myView As CollectionView
 Private Sub AddGrouping(ByVal sender As Object, ByVal e As RoutedEventArgs)
 myView = CType(CollectionViewSource.GetDefaultView(myItemsControl.ItemsSource), CollectionView)
 If myView.CanGroup = True Then
 Dim groupDescription As New PropertyGroupDescription("@Type")
 myView.GroupDescriptions.Add(groupDescription)
 Else
 Return
 End If
 End Sub

 Private Sub RemoveGrouping(ByVal sender As Object, ByVal e As RoutedEventArgs)
 myView = CType(CollectionViewSource.GetDefaultView(myItemsControl.ItemsSource), CollectionView)
 myView.GroupDescriptions.Clear()
 End Sub
 End Class
End Namespace

Remarks

The entry at index 0 describes the top-level groups, the entry at index 1 describes the next level, and so on. If there are more levels of grouping than entries in the collection, the last entry is used for the extra levels.

XAML Property Element Usage

<object>
 <object.GroupStyle>
 OneOrMoreGroupStyleObjects
 </object.GroupStyle>
</object>

XAML Values

OneOrMoreGroupStyleObjects
One or more GroupStyle objects.

Applies to

See also


Feedback

Was this page helpful?