ItemsControl.AlternationIndex Присоединенное свойство

Определение

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

see GetAlternationIndex, and SetAlternationIndex
see GetAlternationIndex
see GetAlternationIndex, and SetAlternationIndex
see GetAlternationIndex
see GetAlternationIndex, and SetAlternationIndex
see GetAlternationIndex

Примеры

В следующем примере указывается, что ListBox (который наследует от ItemsControl) имеет чередующиеся контейнеры элементов (которые имеют тип ListBoxItem) и задает разные фон и передний план для каждого из них. В примере выполняется привязка Background свойств и Foreground свойств к каждому ItemsControl.AlternationIndex свойству AlternationConverter .

<Grid>
  <Grid.Resources>
    <AlternationConverter x:Key="BackgroundConverter">
      <SolidColorBrush>Blue</SolidColorBrush>
      <SolidColorBrush>CornflowerBlue</SolidColorBrush>
      <SolidColorBrush>LightBlue</SolidColorBrush>
    </AlternationConverter>

    <AlternationConverter x:Key="AlternateForegroundConverter">
      <SolidColorBrush>White</SolidColorBrush>
      <SolidColorBrush>Black</SolidColorBrush>
      <SolidColorBrush>Navy</SolidColorBrush>
    </AlternationConverter>

    <Style x:Key="alternatingWithBinding" TargetType="{x:Type ListBoxItem}">
      <Setter Property="Background" 
              Value="{Binding RelativeSource={RelativeSource Self},
                     Path=(ItemsControl.AlternationIndex),
                     Converter={StaticResource BackgroundConverter}}"/>

      <Setter Property="Foreground" 
              Value="{Binding RelativeSource={RelativeSource Self},
                     Path=(ItemsControl.AlternationIndex),
                     Converter={StaticResource AlternateForegroundConverter}}"/>
    </Style>

  </Grid.Resources>

  <ListBox AlternationCount="3" ItemsSource="{StaticResource data}"
           ItemContainerStyle="{StaticResource alternatingWithBinding}"/>
</Grid>

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

<Grid>
  <Grid.Resources>
    <Style x:Key="alternatingWithTriggers" TargetType="{x:Type ListBoxItem}">
      <Setter Property="Background" Value="Blue"/>
      <Setter Property="Foreground" Value="White"/>
      <Style.Triggers>
        <Trigger Property="ListBox.AlternationIndex" Value="1">
          <Setter Property="Background" Value="CornflowerBlue"/>
          <Setter Property="Foreground" Value="Black"/>
        </Trigger>
        <Trigger Property="ListBox.AlternationIndex" Value="2">
          <Setter Property="Background" Value="LightBlue"/>
          <Setter Property="Foreground" Value="Navy"/>
        </Trigger>
      </Style.Triggers>
    </Style>

  </Grid.Resources>
  <ListBox AlternationCount="3" ItemsSource="{StaticResource data}" 
           ItemContainerStyle="{StaticResource alternatingWithTriggers}">
  </ListBox>
</Grid>

Комментарии

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

Положение элемента в элементе ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

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

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