HierarchicalDataTemplate.AlternationCount Proprietà

Definizione

Ottiene o imposta il numero di contenitori di elementi alternati per gli elementi figlio.

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

Valore della proprietà

Int32

Numero di contenitori di elementi alternati per il livello successivo di elementi.

Esempio

Nell'esempio seguente viene creato un TreeView oggetto associato ai dati a tre livelli profondi e ogni elemento viene visualizzato in un TextBlockoggetto . Gli TextBlock oggetti nel primo livello hanno gli stessi valori delle proprietà, gli TextBlock oggetti nel secondo livello usano valori alternati per la proprietà e gli TextBlock oggetti nel terzo livello usano valori alternati per la FontStyle Background proprietà.

Poiché per HierarchicalDataTemplate il primo livello, Level1Data, ha la AlternationCount proprietà impostata su 2, l'oggetto ItemsControl.AlternationIndex per gli TreeViewItem oggetti nel secondo livello alterna tra 0 e 1. HierarchicalDataTemplate Nella classe per il secondo livello , Level2Datal'oggetto dell'oggetto TextBlock è associato all'oggetto FontStyle ItemsControl.AlternationIndex e AlternationConverter viene fornito per convertire l'oggetto ItemsControl.AlternationIndex in un oggetto alternativo FontStyle. Esiste una relazione simile tra Level2Data e : l'oggetto AlternationCount è impostato su 3 su Level2Datae in ha la relativa Background proprietà associata all'oggetto ItemsControl.AlternationIndexTextBlock Level3Ddata .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>

Commenti

Le AlternationCount proprietà e ItemsControl.AlternationIndex consentono di specificare l'aspetto per due o più contenitori di elementi alternati. Ad esempio, è possibile specificare colori di sfondo alternati per ogni terzo elemento in un ItemsControloggetto . L'oggetto ItemsControl.AlternationIndex viene assegnato a ogni contenitore di elementi nell'oggetto ItemsControl. ItemsControl.AlternationIndex inizia a 0, incrementa fino a quando non è AlternationCount meno 1 e quindi riavvia a 0. Ad esempio, se AlternationCount è 3 e sono presenti sette elementi nella ItemsControltabella seguente elenca gli ItemsControl.AlternationIndex elementi per ogni elemento.

Posizione dell'elemento nell'oggetto ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

Quando si imposta la proprietà, si indica che gli elementi figlio devono ottenere un ItemsControl.AlternationIndex intervallo, non l'elemento AlternationCount applicatoHierarchicalDataTemplate. Ad esempio, se un oggetto denominato usa un HeaderedItemsControl oggetto con il AlternationCount set, i contenitori di elementi figlio degli elementi figlio di aHeaderedItemsControl avranno un HierarchicalDataTemplate ItemsControl.AlternationIndexoggetto , non il contenitore di elementi per aHeaderedItemsControl.aHeaderedItemsControl

Esistono diversi metodi che è possibile usare per specificare aspetti diversi per i contenitori di elementi alternativi. Un metodo consiste nell'associare le proprietà del contenitore elementi all'oggetto ItemsControl.AlternationIndex. È quindi possibile usare un AlternationConverter oggetto per specificare quale valore deve essere applicato al contenitore di elementi con un determinato ItemsControl.AlternationIndex valore. È anche possibile usare trigger per modificare il valore della proprietà di un contenitore di elementi a seconda del valore del relativo ItemsControl.AlternationIndex.

Si applica a