Sdílet prostřednictvím


HierarchicalDataTemplate.AlternationCount Vlastnost

Definice

Získá nebo nastaví počet kontejnerů střídavých položek pro podřízené položky.

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

Hodnota vlastnosti

Počet střídavých kontejnerů položek pro další úroveň položek.

Příklady

Následující příklad vytvoří objekt TreeView , který je vázaný na data, která mají hloubku tří úrovní, a každá položka se zobrazí v objektu TextBlock. Objekty TextBlock na první úrovni mají stejné hodnoty vlastností, TextBlock objekty na druhé úrovni používají pro FontStyle vlastnost střídavé hodnoty a TextBlock objekty na třetí úrovni používají pro Background vlastnost střídavé hodnoty.

HierarchicalDataTemplate Vzhledem k tomu, Level1Dataže pro první úroveň má vlastnost nastavenou AlternationCount na hodnotu 2, ItemsControl.AlternationIndex objekty TreeViewItem ve druhé úrovni se střídají mezi 0 a 1. V objektu HierarchicalDataTemplate pro druhou úroveň Level2Dataje hodnota FontStyle z objektu TextBlock vázána k objektu ItemsControl.AlternationIndex a AlternationConverter je poskytnuta hodnota , která převede ItemsControl.AlternationIndex hodnotu na střídavou FontStylehodnotu . Podobný vztah existuje mezi Level2Data a : Hodnota AlternationCount je nastavená na Level2Datahodnotu 3 v a TextBlock hodnota v Level3DdataBackground svoji vlastnost vázanou na ItemsControl.AlternationIndexLevel3Data.

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

Poznámky

Vlastnosti AlternationCount a ItemsControl.AlternationIndex umožňují určit vzhled dvou nebo více kontejnerů střídavých položek. Můžete například zadat střídavé barvy pozadí pro každou třetí položku v objektu ItemsControl. Je ItemsControl.AlternationIndex přiřazena ke každému kontejneru položek v objektu ItemsControl. ItemsControl.AlternationIndex začíná na 0, přírůstky, dokud není AlternationCount mínus 1, a pak se restartuje v 0. Pokud AlternationCount je například hodnota 3 a v objektu ItemsControlje sedm položek, v následující tabulce je seznam ItemsControl.AlternationIndex pro každou položku.

Pozice položky v ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

Při nastavování AlternationCount vlastnosti určujete, že podřízené položky by měly získat hodnotu ItemsControl.AlternationIndex v daném rozsahu, nikoli položku, která má tuto HierarchicalDataTemplate vlastnost použitou pro ni. Pokud například volaný používá se sadou , kontejnery položek podřízených položek budou aHeaderedItemsControl mít ItemsControl.AlternationIndex, nikoli kontejner položky pro aHeaderedItemsControl.AlternationCountHierarchicalDataTemplateHeaderedItemsControlaHeaderedItemsControl

Existuje několik metod, které můžete použít k určení různých vzhledů kontejnerů střídavých položek. Jednou z metod je vytvoření vazby vlastností kontejneru items na ItemsControl.AlternationIndex. Pak můžete použít k AlternationConverter určení hodnoty, která se má použít pro kontejner položek, který má určitou ItemsControl.AlternationIndex hodnotu. Triggery můžete také použít ke změně hodnoty vlastnosti kontejneru položek v závislosti na hodnotě .ItemsControl.AlternationIndex

Platí pro