HierarchicalDataTemplate.AlternationCount Propriété

Définition

Obtient ou définit le nombre de conteneurs d'éléments de remplacement pour les éléments enfants.

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

Valeur de propriété

Int32

Nombre de conteneurs d'éléments de remplacement pour le niveau suivant d'éléments.

Exemples

L’exemple suivant crée un TreeView élément lié aux données à trois niveaux de profondeur, et chaque élément est affiché dans un TextBlock. Les TextBlock objets du premier niveau ont les mêmes valeurs de propriété, les TextBlock objets du deuxième niveau utilisent des valeurs alternées pour la FontStyle propriété, et les TextBlock objets du troisième niveau utilisent des valeurs alternées pour la Background propriété.

Étant donné que le HierarchicalDataTemplate premier niveau est défini sur 2, Level1Datala AlternationCount ItemsControl.AlternationIndex propriété est définie sur 2 pour les TreeViewItem objets du deuxième niveau, entre 0 et 1. Dans le HierarchicalDataTemplate deuxième niveau, Level2Datale FontStyle des TextBlock deux est lié au ItemsControl.AlternationIndex et un AlternationConverter est fourni pour convertir le ItemsControl.AlternationIndex en alterné FontStyle. Une relation similaire existe entre et : La AlternationCount valeur est définie sur 3 sur Level2Data, et l’in Level3Ddata TextBlock a sa Background propriété liée au ItemsControl.AlternationIndex.Level3Data``Level2Data

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

Remarques

Les AlternationCount propriétés et ItemsControl.AlternationIndex les propriétés vous permettent de spécifier l’apparence pour deux conteneurs d’éléments alternatifs ou plus. Par exemple, vous pouvez spécifier des couleurs d’arrière-plan alternées pour chaque troisième élément d’un ItemsControl. Le ItemsControl.AlternationIndex conteneur d’éléments est affecté à chaque conteneur d’éléments dans le ItemsControl. ItemsControl.AlternationIndex commence à 0, incrémente jusqu’à ce qu’il soit AlternationCount moins 1, puis redémarre à 0. Par exemple, si AlternationCount la valeur est 3 et qu’il y a sept éléments dans le ItemsControltableau suivant, le tableau suivant répertorie les ItemsControl.AlternationIndex éléments pour chaque élément.

Position de l’élément dans le ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

Lorsque vous définissez la AlternationCount propriété, vous indiquez que les éléments enfants doivent obtenir une ItemsControl.AlternationIndex valeur dans cette plage, et non l’élément qui l’a HierarchicalDataTemplate appliqué. Par exemple, si un HeaderedItemsControl appelé aHeaderedItemsControl utilise un HierarchicalDataTemplate avec le AlternationCount jeu, les conteneurs d’éléments des éléments aHeaderedItemsControl enfants ont un ItemsControl.AlternationIndex, et non le conteneur d’éléments pour aHeaderedItemsControl.

Il existe plusieurs méthodes que vous pouvez utiliser pour spécifier différentes apparences pour les conteneurs d’éléments alternatifs. Une méthode consiste à lier les propriétés du conteneur d’éléments au ItemsControl.AlternationIndex. Vous pouvez ensuite utiliser une AlternationConverter valeur pour spécifier quelle valeur doit être appliquée au conteneur d’éléments qui a une certaine ItemsControl.AlternationIndex valeur. Vous pouvez également utiliser des déclencheurs pour modifier la valeur de la propriété d’un conteneur d’éléments en fonction de la valeur de son ItemsControl.AlternationIndex.

S’applique à