HierarchicalDataTemplate.AlternationCount Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает количество чередующихся контейнеров элементов для дочерних элементов.
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
Значение свойства
Количество чередующихся контейнеров элементов на следующем уровне элементов.
Примеры
В следующем примере создается TreeView объект , привязанный к данным глубины трех уровней, и каждый элемент отображается в TextBlock. Объекты TextBlock на первом уровне имеют одинаковые значения свойств, TextBlock объекты второго уровня используют чередующиеся значения для FontStyle свойства, а TextBlock объекты третьего уровня используют чередующиеся значения для Background свойства .
HierarchicalDataTemplate Так как для первого уровня , Level1Data
свойство AlternationCount имеет значение 2, ItemsControl.AlternationIndex для TreeViewItem объектов второго уровня чередуется от 0 до 1. В для HierarchicalDataTemplate второго уровня FontStyleLevel2Data
TextBlock объект привязывается к ItemsControl.AlternationIndex и AlternationConverter предоставляется для преобразования ItemsControl.AlternationIndex в переменную .FontStyle Аналогичная связь существует между Level2Data
и Level3Data
: для AlternationCount задано значение 3 в Level2Data
, а TextBlock свойство in Level3Ddata
привязано BackgroundItemsControl.AlternationIndexк .
<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>
Комментарии
Свойства AlternationCount и ItemsControl.AlternationIndex позволяют указать внешний вид для двух или более чередующихся контейнеров элементов. Например, можно указать чередующиеся цвета фона для каждого третьего ItemsControlэлемента в . назначается ItemsControl.AlternationIndex каждому контейнеру ItemsControlэлементов в . ItemsControl.AlternationIndex начинается с 0, увеличивается AlternationCount до минус 1, а затем перезапускается с 0. Например, если AlternationCount имеет значение 3 и в элементе ItemsControlсодержится семь элементов , в следующей таблице перечислены ItemsControl.AlternationIndex элементы для каждого элемента.
Положение элемента в ItemsControl | ItemsControl.AlternationIndex |
---|---|
1 | 0 |
2 | 1 |
3 | 2 |
4 | 0 |
5 | 1 |
6 | 2 |
7 | 0 |
При установке AlternationCount свойства вы указываете, что дочерние элементы должны получить ItemsControl.AlternationIndex объект в этом диапазоне, а не элемент, к которому он HierarchicalDataTemplate применяется. Например, если вызываемый HeaderedItemsControlaHeaderedItemsControl
использует с набором AlternationCountHierarchicalDataTemplate, контейнеры элементов дочерних aHeaderedItemsControl
элементов будут иметь ItemsControl.AlternationIndex, а не контейнер элементов для aHeaderedItemsControl
.
Существует несколько методов, которые можно использовать для указания различных внешних видов для контейнеров переменных элементов. Одним из способов является привязка свойств контейнера элементов к объекту ItemsControl.AlternationIndex. Затем можно использовать AlternationConverter , чтобы указать, какое значение следует применить к контейнеру элементов, который имеет определенное ItemsControl.AlternationIndex значение. Триггеры также можно использовать для изменения значения свойства контейнера элементов в зависимости от его значения ItemsControl.AlternationIndex.