ItemsControl.GroupStyle Propiedad

Definición

Obtiene una colección de objetos GroupStyle que definen la apariencia de cada nivel de grupos.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)

Valor de propiedad

ObservableCollection<GroupStyle>

Colección de objetos GroupStyle que definen la apariencia de cada nivel de grupos.A collection of GroupStyle objects that define the appearance of each level of groups.

Ejemplos

En los siguientes ejemplos se muestra un ItemsControl que está enlazado a un XmlDataProvider y el contenido de código subyacente que contiene la lógica para agregar y quitar la agrupación.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. Cuando se activa la casilla, el contenido de la ItemsControl se agrupa por el atributo Type.When the check box is checked, the content of the ItemsControl is grouped by the Type attribute.

Cada grupo es de tipo CollectionViewGroup.Each group is of type CollectionViewGroup. Se especifica el HeaderTemplate de GroupStyle para que aparezca como un TextBlock que muestra el Name de cada grupo.The GroupStyle HeaderTemplate is specified so that it appears as a TextBlock that displays the Name of each the group. En este caso, el Name es Work o Home.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 == true)
            {
                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

Comentarios

La entrada en el índice 0 describe los grupos de nivel superior, la entrada en el índice 1 describe el nivel siguiente, y así sucesivamente.The entry at index 0 describes the top-level groups, the entry at index 1 describes the next level, and so on. Si hay más niveles de agrupación que las entradas de la colección, se usa la última entrada para los niveles adicionales.If there are more levels of grouping than entries in the collection, the last entry is used for the extra levels.

Uso de elementos de propiedad XAMLXAML Property Element Usage

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

Valores XAMLXAML Values

OneOrMoreGroupStyleObjectsOneOrMoreGroupStyleObjects
Uno o varios objetos GroupStyle.One or more GroupStyle objects.

Se aplica a

Consulte también: