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

属性值

Int32

下一级项的交替项容器的数量。

示例

以下示例创建一个 TreeView 绑定到深度为三个级别的数据,并且每个项显示在一个 TextBlock中。 TextBlock第一个级别中的对象具有相同的属性值,TextBlock第二级中的对象对FontStyle属性使用交替值,TextBlock第三个级别中的对象对Background属性使用交替值。

由于对于HierarchicalDataTemplate第一个级别,Level1DataAlternationCount属性设置为 2,ItemsControl.AlternationIndexTreeViewItem第二个级别中的对象在 0 和 1 之间交替。 HierarchicalDataTemplate在第二个级别中, Level2DataFontStyle TextBlock将绑定在ItemsControl.AlternationIndex一个级别,并提供一个AlternationConverter用于转换为ItemsControl.AlternationIndex交替的FontStyle函数。 存在类似的关系:Level2Data设置为 3 onLevel2Data,并且TextBlockBackgroundLevel3Ddata属性绑定到该ItemsControl.AlternationIndex属性。AlternationCount 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>

注解

使用 AlternationCountItemsControl.AlternationIndex 属性可以指定两个或多个交替项容器的外观。 For example, you can specify alternating background colors for every third item in an ItemsControl. The ItemsControl.AlternationIndex is assigned to each item container in the 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 项。 例如,如果HeaderedItemsControl调用方aHeaderedItemsControl使用集HierarchicalDataTemplateAlternationCount,则子项的项aHeaderedItemsControl容器将具有一个ItemsControl.AlternationIndex,而不是项aHeaderedItemsControl容器。

有多种方法可用于为交替项容器指定不同的外观。 一种方法是将项容器的属性绑定到 .ItemsControl.AlternationIndex 然后,可以使用一个 AlternationConverter 值指定应应用于具有特定 ItemsControl.AlternationIndex 值的项容器的值。 还可以使用触发器根据项容器的值更改项容器属性的值 ItemsControl.AlternationIndex

适用于