HierarchicalDataTemplate.AlternationCount Właściwość

Definicja

Pobiera lub ustawia liczbę kontenerów elementów alternatywnych dla elementów podrzędnych.

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

Wartość właściwości

Liczba przemiennych kontenerów elementów dla następnego poziomu elementów.

Przykłady

Poniższy przykład tworzy element TreeView powiązany z danymi, które są trzy poziomy głębokie, a każdy element jest wyświetlany w elemencie TextBlock. Obiekty TextBlock na pierwszym poziomie mają te same wartości właściwości, TextBlock obiekty na drugim poziomie używają wartości przemiennych dla FontStyle właściwości, a TextBlock obiekty na trzecim poziomie używają wartości przemiennych dla Background właściwości.

Ponieważ dla HierarchicalDataTemplate pierwszego poziomu Level1Datawłaściwość ma AlternationCount właściwość ustawioną na 2, ItemsControl.AlternationIndexTreeViewItem dla obiektów w drugim poziomie alternatywne między 0 a 1. HierarchicalDataTemplate W polu dla drugiego poziomu Level2Datawartość FontStyle parametru TextBlock jest powiązana ItemsControl.AlternationIndex z wartością , AlternationConverter a element jest dostarczany w celu przekonwertowania ItemsControl.AlternationIndex wartości na zmienną FontStyle. Istnieje podobna relacja między wartościami i : Właściwość AlternationCount jest ustawiona na wartość 3 w obiekcie Level2Data, a TextBlock właściwość in Level3Ddata jest Background powiązana z właściwością ItemsControl.AlternationIndex.Level3DataLevel2Data

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

Uwagi

Właściwości AlternationCount i ItemsControl.AlternationIndex umożliwiają określenie wyglądu co najmniej dwóch kontenerów elementów przemiennych. Można na przykład określić naprzemienne kolory tła dla każdego trzeciego elementu w elemencie ItemsControl. Element ItemsControl.AlternationIndex jest przypisywany do każdego kontenera elementów w elemencie ItemsControl. ItemsControl.AlternationIndex zaczyna się od 0, zwiększa się do AlternationCount momentu minus 1, a następnie ponownie uruchamia się o 0. Jeśli na przykład AlternationCount wartość to 3, a w tabeli ItemsControlznajduje się siedem elementów, poniższa tabela zawiera listę ItemsControl.AlternationIndex dla każdego elementu.

Położenie elementu w elemencie ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

Po ustawieniu AlternationCount właściwości wskazujesz, że elementy podrzędne powinny uzyskać element ItemsControl.AlternationIndex w tym zakresie, a nie element, który został HierarchicalDataTemplate do niego zastosowany. Jeśli na przykład wywołana HeaderedItemsControlaHeaderedItemsControl funkcja używa elementu HierarchicalDataTemplate z AlternationCount zestawem, kontenery elementów podrzędnych elementów podrzędnych aHeaderedItemsControl będą mieć ItemsControl.AlternationIndexkontener elementu , a nie kontener elementu dla aHeaderedItemsControlelementu .

Istnieje kilka metod, których można użyć do określania różnych wyglądów kontenerów elementów przemiennych. Jedną z metod jest powiązanie właściwości kontenera elementów z kontenerem ItemsControl.AlternationIndex. Następnie można użyć polecenia , AlternationConverter aby określić, która wartość powinna być stosowana do kontenera elementów, który ma określoną ItemsControl.AlternationIndex wartość. Możesz również użyć wyzwalaczy, aby zmienić wartość właściwości kontenera elementu w zależności od wartości jej ItemsControl.AlternationIndex.

Dotyczy