HierarchicalDataTemplate.AlternationCount Propiedad

Definición

Obtiene o establece el número de contenedores de elementos alternos para los elementos secundarios.

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

Valor de propiedad

Número de contenedores de elementos alternos para el siguiente nivel de elementos.

Ejemplos

En el ejemplo siguiente se crea un TreeView objeto enlazado a los datos que son tres niveles de profundidad y cada elemento se muestra en un TextBlock. Los TextBlock objetos del primer nivel tienen los mismos valores de propiedad, los TextBlock objetos del segundo nivel usan valores alternados para la FontStyle propiedad y los TextBlock objetos del tercer nivel usan valores alternados para la Background propiedad.

Dado que para HierarchicalDataTemplate el primer nivel, Level1Data, tiene la AlternationCount propiedad establecida en 2, para ItemsControl.AlternationIndex los TreeViewItem objetos del segundo nivel se alterna entre 0 y 1. En para HierarchicalDataTemplate el segundo nivel, Level2Data, el FontStyle de TextBlock está enlazado a ItemsControl.AlternationIndex y se proporciona para AlternationConverter convertir en ItemsControl.AlternationIndex una alternancia FontStyle. Existe una relación similar entre y : se establece en 3 en Level2Datay el TextBlock objeto in Level3Ddata tiene su Background propiedad enlazada a ItemsControl.AlternationIndex.AlternationCountLevel3DataLevel2Data

<StackPanel>
  <StackPanel.Resources>

    <!--Returns alternating brushes.-->
    <AlternationConverter x:Key="TeamsBackgroundConverter">
      <SolidColorBrush>LimeGreen</SolidColorBrush>
      <SolidColorBrush>SpringGreen</SolidColorBrush>
      <SolidColorBrush>Chartreuse</SolidColorBrush>
    </AlternationConverter>

    <!--The DataTemplate used by TreeViewItems in the third level
    of the TreeView.-->
    <DataTemplate x:Key="Level3Data">
      <TextBlock Text="{Binding Path=Name}"
        Background="{Binding RelativeSource={RelativeSource FindAncestor, 
           AncestorType={x:Type TreeViewItem}},
           Path=(ItemsControl.AlternationIndex),
           Converter={StaticResource TeamsBackgroundConverter}}"/>
    </DataTemplate>

    <!--Returns altnernating FontStyles.-->
    <AlternationConverter x:Key="LeagueFontStyleConverter">
      <FontStyle >Italic</FontStyle>
      <FontStyle >Normal</FontStyle>
    </AlternationConverter>

    <!--The HierarchicalDataTemplate used by TreeViewItems
     in the second level of the TreeView.-->
    <HierarchicalDataTemplate x:Key="Level2Data"
      ItemsSource="{Binding Path=Teams}"
      ItemTemplate="{StaticResource Level3Data}"
      AlternationCount="3">
      <TextBlock Text="{Binding Path=Name}"
        FontStyle="{Binding RelativeSource={RelativeSource FindAncestor, 
           AncestorType={x:Type TreeViewItem}},
           Path=(ItemsControl.AlternationIndex),
           Converter={StaticResource LeagueFontStyleConverter}}"/>
    </HierarchicalDataTemplate>

    <!--The HierarchicalDataTemplate used by TreeViewItems
     in the first level of the TreeView.-->
    <HierarchicalDataTemplate x:Key="Level1Data"
      ItemsSource="{Binding Path=Divisions}"
      ItemTemplate="{StaticResource Level2Data}"
      AlternationCount="2">
      <TextBlock Text="{Binding Path=Name}" FontWeight="Bold"/>
    </HierarchicalDataTemplate>

    <Style TargetType="TreeViewItem">
      <Setter Property="IsExpanded" Value="True"/>
    </Style>
  </StackPanel.Resources>

  <TreeView ItemsSource="{Binding Source={StaticResource MyTreeViewData}}"
            ItemTemplate="{StaticResource Level1Data}"/>
</StackPanel>

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

Al establecer la AlternationCount propiedad , se indica que los elementos secundarios deben obtener un ItemsControl.AlternationIndex elemento en ese intervalo, no el elemento que lo ha HierarchicalDataTemplate aplicado. Por ejemplo, si un HeaderedItemsControl llamado aHeaderedItemsControl usa un HierarchicalDataTemplate elemento con el AlternationCount conjunto , los contenedores de elementos de los elementos secundarios de aHeaderedItemsControl tendrán , ItemsControl.AlternationIndexno el contenedor de elementos para aHeaderedItemsControl.

Hay varios métodos que puede usar para especificar diferentes apariencias para los contenedores de elementos alternados. Un método consiste en enlazar propiedades del contenedor de elementos a ItemsControl.AlternationIndex. A continuación, puede usar un AlternationConverter para 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