Freigeben über


HierarchicalDataTemplate.AlternationCount Eigenschaft

Definition

Ruft die Anzahl der abwechselnden Elementcontainer für die untergeordneten Elemente ab oder legt diese fest.

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

Eigenschaftswert

Die Anzahl der abwechselnden Elementcontainer für die nächste Ebene von Elementen.

Beispiele

Im folgenden Beispiel wird ein TreeView erstellt, das an Daten gebunden ist, die drei Ebenen tief sind, und jedes Element wird in einem TextBlockangezeigt. Die TextBlock Objekte in der ersten Ebene haben die gleichen Eigenschaftswerte, die TextBlock Objekte in der zweiten Ebene verwenden abwechselnde Werte für die FontStyle Eigenschaft, und die TextBlock Objekte in der dritten Ebene verwenden abwechselnde Werte für die Background Eigenschaft.

Da für die HierarchicalDataTemplate erste Ebene, Level1Data, die AlternationCount -Eigenschaft auf 2 festgelegt ist, wechselt der ItemsControl.AlternationIndex für die TreeViewItem Objekte in der zweiten Ebene zwischen 0 und 1. In der HierarchicalDataTemplate für die zweite Ebene Level2Dataist die FontStyle der TextBlock an die ItemsControl.AlternationIndex gebunden, und ein AlternationConverter wird bereitgestellt, um die ItemsControl.AlternationIndex in ein alternierendes FontStylezu konvertieren. Eine ähnliche Beziehung besteht zwischen Level2Data und : Die AlternationCount ist auf 3 für Level2Datafestgelegt, und die TextBlock in Level3Ddata hat seine Background -Eigenschaft an den ItemsControl.AlternationIndexgebunden.Level3Data

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

Hinweise

Mit AlternationCount den Eigenschaften und ItemsControl.AlternationIndex können Sie die Darstellung für zwei oder mehr container abwechselnde Elemente angeben. Beispielsweise können Sie für jedes dritte Element in einem ItemsControlabwechselnde Hintergrundfarben angeben. Wird ItemsControl.AlternationIndex jedem Elementcontainer im ItemsControlzugewiesen. ItemsControl.AlternationIndex beginnt bei 0, inkrementiert, bis es minus 1 ist AlternationCount , und startet dann bei 0 neu. Wenn z. B. AlternationCount 3 ist und sieben Elemente im enthalten ItemsControlsind, enthält die folgende Tabelle die ItemsControl.AlternationIndex für jedes Element.

Position des Elements im ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

Wenn Sie die AlternationCount -Eigenschaft festlegen, geben Sie an, dass die untergeordneten Elemente einen ItemsControl.AlternationIndex in diesem Bereich erhalten sollen, nicht das Element, auf das dies HierarchicalDataTemplate angewendet wurde. Wenn z. B. ein aufgerufener mit dem AlternationCount Satz verwendet, verfügen die Elementcontainer der untergeordneten Elemente von über aHeaderedItemsControl einen ItemsControl.AlternationIndex- und nicht über den Elementcontainer für aHeaderedItemsControl.HierarchicalDataTemplateHeaderedItemsControlaHeaderedItemsControl

Es gibt mehrere Methoden, mit denen Sie unterschiedliche Darstellungen für die Container für abwechselnde Elemente angeben können. Eine Methode besteht darin, Eigenschaften des Elementcontainers an das ItemsControl.AlternationIndexzu binden. Anschließend können Sie einen AlternationConverter verwenden, um anzugeben, welcher Wert auf den Elementcontainer angewendet werden soll, der über einen bestimmten ItemsControl.AlternationIndex Wert verfügt. Sie können auch Trigger verwenden, um den Wert der -Eigenschaft eines Elementcontainers abhängig vom Wert seiner ItemsControl.AlternationIndexzu ändern.

Gilt für: