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


GroupStyle.AlternationCount Свойство

Определение

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

public:
 property int AlternationCount { int get(); void set(int value); };
public int AlternationCount { get; set; }
member this.AlternationCount : int with get, set
Public Property AlternationCount As Integer

Значение свойства

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

Примеры

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

В примере также можно изменить фон элементов между ListBox тремя цветами, задав ListBoxAlternationCount для каждого из них привязку Background каждого ListBox из ItemsControl.AlternationIndexних. В этом случае фон чередуется между тремя цветами.

Не CollectionViewSource отображается группа элементов. Сведения о том, как сгруппировать элемент, см. в разделе "How to: Sort and Group Data Using a View in XAML".

<StackPanel>

  <StackPanel.Resources>

    <!--Returns a Brush for the header of a GroupItem.-->
    <AlternationConverter x:Key="GroupHeaderBackgroundConverter">
      <SolidColorBrush>LightBlue</SolidColorBrush>
      <SolidColorBrush>LightSteelBlue</SolidColorBrush>
    </AlternationConverter>

    <!--Returns a Brush for a ListBoxItem.-->
    <AlternationConverter x:Key="BackgroundConverter">
      <SolidColorBrush>Silver</SolidColorBrush>
      <SolidColorBrush>LightGray</SolidColorBrush>
      <SolidColorBrush>GhostWhite</SolidColorBrush>
    </AlternationConverter>

  </StackPanel.Resources>

  <ListBox ItemsSource="{Binding Source={StaticResource groupedData}}"
           DisplayMemberPath="CityName" AlternationCount="3" Name="lb">

    <ListBox.GroupStyle>
      <!--Set alternating backgrounds on the header of each group.-->
      <GroupStyle AlternationCount="2">
        <GroupStyle.HeaderTemplate>
          <DataTemplate>
            <TextBlock FontWeight="Bold" 
                       Text="{Binding Path=Name}" 
                       Background="{Binding 
                           RelativeSource={RelativeSource FindAncestor, 
                           AncestorType={x:Type GroupItem}},
                           Path=(ItemsControl.AlternationIndex),
                           Converter={StaticResource 
                                      GroupHeaderBackgroundConverter}}"/>
          </DataTemplate>
        </GroupStyle.HeaderTemplate>
      </GroupStyle>
    </ListBox.GroupStyle>

    <ListBox.ItemContainerStyle>
      <!--Set alternating backgrounds on the items in the ListBox.-->
      <Style TargetType="{x:Type ListBoxItem}">
        <Setter Property="Background" 
                Value="{Binding RelativeSource={RelativeSource Self},
                     Path=(ItemsControl.AlternationIndex),
                     Converter={StaticResource BackgroundConverter}}"/>
      </Style>
    </ListBox.ItemContainerStyle>
  </ListBox>
</StackPanel>

Комментарии

Свойство AlternationCount и присоединенное свойство позволяют указать внешний ItemsControl.AlternationIndex вид для двух или нескольких переменных GroupItem объектов. Например, можно указать чередующиеся цвета фона для каждой трети GroupItem в объекте ItemsControl. Присваивается ItemsControl.AlternationIndex каждому GroupItem из них ItemsControl. ItemsControl.AlternationIndex начинается с 0, увеличивается до AlternationCount минус 1, а затем перезапускается на 0. Например, если AlternationCount имеется 3 и в ней ItemsControlесть семь GroupItem объектов, в следующей таблице перечислены ItemsControl.AlternationIndex элементы.

GroupItem Положение вItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

Существует несколько методов, с помощью которых можно указать различные внешние представления для чередующихся GroupItem объектов. Один из методов заключается в привязке свойств в HeaderTemplate или ContainerStyle из GroupStyle них ItemsControl.AlternationIndexк . Затем можно указать AlternationConverter , какое значение следует применить к GroupItem определенному ItemsControl.AlternationIndex значению. Триггеры также можно использовать для изменения значения свойства в зависимости от его значения ItemsControl.AlternationIndex.

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