HierarchicalDataTemplate.AlternationCount Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 Level1Data
wł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 Level2Data
wartość 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.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>
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 aHeaderedItemsControl
elementu .
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.