Прочитать на английском

Поделиться через


GroupStyle Класс

Определение

Определяет способ просмотра группы на каждом уровне.

C#
[System.Windows.Localizability(System.Windows.LocalizationCategory.None, Readability=System.Windows.Readability.Unreadable)]
public class GroupStyle : System.ComponentModel.INotifyPropertyChanged
Наследование
GroupStyle
Атрибуты
Реализации

Примеры

В следующих примерах показана ItemsControl, привязанная к XmlDataProvider, и содержимое кода, содержащее логику для добавления и удаления группирования. Если флажок установлен, содержимое ItemsControl сгруппировано по атрибуту Type.

Каждая группа имеет тип CollectionViewGroup. GroupStyle HeaderTemplate указывается таким образом, чтобы оно отображалось как TextBlock, отображающее Name каждой группы. В этом случае NameWork или Home.

XAML
<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>
C#
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();
        }
    }
}

Конструкторы

GroupStyle()

Инициализирует новый экземпляр класса GroupStyle.

Поля

DefaultGroupPanel

Определяет ItemsPanelTemplate по умолчанию, создающий панель, используемую для макета элементов.

Свойства

AlternationCount

Возвращает или задает количество чередующихся объектов GroupItem.

ContainerStyle

Возвращает или задает стиль, применяемый к GroupItem, созданному для каждого элемента.

ContainerStyleSelector

Позволяет записи приложений предоставлять пользовательский логику выбора для стиля, применяемого к каждому созданному GroupItem.

Default

Возвращает стиль группы по умолчанию.

HeaderStringFormat

Возвращает или задает составную строку, указывающую, как отформатировать заголовок, если он отображается как строка.

HeaderTemplate

Возвращает или задает шаблон, используемый для отображения заголовка группы.

HeaderTemplateSelector

Позволяет записи приложений предоставлять пользовательскую логику выбора для шаблона, который используется для отображения заголовка группы.

HidesIfEmpty

Возвращает или задает значение, указывающее, должны ли отображаться элементы, соответствующие пустым группам.

Panel

Возвращает или задает шаблон, который создает панель, используемую для макета элементов.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
OnPropertyChanged(PropertyChangedEventArgs)

Вызывает событие PropertyChanged с помощью предоставленных аргументов.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

События

PropertyChanged

Происходит при изменении значения свойства.

Явные реализации интерфейса

INotifyPropertyChanged.PropertyChanged

Происходит при изменении значения свойства.

Применяется к

Продукт Версии
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

См. также раздел