ItemsControl.AlternationCount Propiedad

Definición

Obtiene o establece el número de contenedores de elementos alternativos en ItemsControl, que permite que los contenedores alternativos tengan una apariencia única.

public:
 property int AlternationCount { int get(); void set(int value); };
[System.ComponentModel.Bindable(true)]
public int AlternationCount { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.AlternationCount : int with get, set
Public Property AlternationCount As Integer

Valor de propiedad

Número de contenedores de elementos alternativos en .ItemsControl

Atributos

Ejemplos

En el ejemplo siguiente se especifica que ListBox (que hereda de ItemsControl) tiene contenedores de elementos alternados (que son de tipo ListBoxItem) y especifica un fondo y un primer plano diferentes para cada uno. En el ejemplo se enlazan las Background propiedades y Foreground a ItemsControl.AlternationIndex y se proporciona un AlternationConverter para cada propiedad.

<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>

En el ejemplo siguiente se hace lo mismo que en el ejemplo anterior mediante Trigger objetos .

<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>

Comentarios

Las AlternationCount propiedades y ItemsControl.AlternationIndex permiten especificar la apariencia de dos o más contenedores de elementos alternantes. Por ejemplo, puede especificar colores de fondo alternados para cada tercer elemento de un ItemsControl. ItemsControl.AlternationIndex se asigna a cada contenedor de elementos de .ItemsControl ItemsControl.AlternationIndex comienza en 0, se incrementa hasta que es AlternationCount menos 1 y, a continuación, se reinicia en 0. Por ejemplo, si AlternationCount es 3 y hay siete elementos en , en la ItemsControltabla siguiente se muestra el ItemsControl.AlternationIndex para cada elemento.

Posición del elemento en ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

Hay varios métodos que puede usar para especificar diferentes apariencias para los contenedores de elementos alternativos. Un método consiste en enlazar propiedades del contenedor de elementos a .ItemsControl.AlternationIndex A continuación, puede usar para AlternationConverter especificar qué valor se debe aplicar al contenedor de elementos que tiene un valor determinado ItemsControl.AlternationIndex . También puede usar desencadenadores para cambiar el valor de la propiedad de un contenedor de elementos en función del valor de su ItemsControl.AlternationIndex.

Se aplica a