Compartilhar via


HierarchicalDataTemplate.AlternationCount Propriedade

Definição

Obtém ou define o número de contêineres de itens alternados para os itens filhos.

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

Valor da propriedade

Int32

O número de contêineres de item alternados para o próximo nível de itens.

Exemplos

O exemplo a seguir cria um TreeView associado a dados com três níveis de profundidade e cada item é exibido em um TextBlock. Os TextBlock objetos no primeiro nível têm os mesmos valores de propriedade, os TextBlock objetos no segundo nível usam valores alternados para a FontStyle propriedade e os TextBlock objetos no terceiro nível usam valores alternados para a Background propriedade.

Como o HierarchicalDataTemplate primeiro nível tem Level1Dataa AlternationCount propriedade definida como 2, para os ItemsControl.AlternationIndex TreeViewItem objetos no segundo nível alterna entre 0 e 1. HierarchicalDataTemplate No segundo nível, Level2Datao FontStyle do TextBlock é associado ao ItemsControl.AlternationIndex e um AlternationConverter é fornecido para converter em ItemsControl.AlternationIndex um alternadoFontStyle. Existe uma relação semelhante entre: o conjunto é definido como 3 ativado Level2Datae o TextBlock in Level3Ddata tem sua Background propriedade associada ao ItemsControl.AlternationIndex.AlternationCount 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>

Comentários

As AlternationCount propriedades e as ItemsControl.AlternationIndex propriedades permitem que você especifique a aparência de dois ou mais contêineres de itens alternados. Por exemplo, você pode especificar cores de plano de fundo alternadas para cada terceiro item em um ItemsControl. O ItemsControl.AlternationIndex item é atribuído a cada contêiner de item no ItemsControl. ItemsControl.AlternationIndex começa em 0, incrementa até ser AlternationCount menos 1 e, em seguida, reinicia em 0. Por exemplo, se AlternationCount for 3 e houver sete itens na tabela a ItemsControlseguir listará o ItemsControl.AlternationIndex item para cada item.

Posição do item no ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

Ao definir a AlternationCount propriedade, você está indicando que os itens filho devem obter um ItemsControl.AlternationIndex nesse intervalo, não o item que tem isso HierarchicalDataTemplate aplicado a ela. Por exemplo, se um HeaderedItemsControl chamado aHeaderedItemsControl usa um HierarchicalDataTemplate com o AlternationCount conjunto, os contêineres de item dos itens filho terão aHeaderedItemsControl um ItemsControl.AlternationIndexcontêiner aHeaderedItemsControlde item para .

Há vários métodos que você pode usar para especificar diferentes aparências para os contêineres de itens alternados. Um método é associar propriedades do contêiner de itens ao ItemsControl.AlternationIndex. Em seguida, você pode usar um AlternationConverter para especificar qual valor deve ser aplicado ao contêiner de item que tem um determinado ItemsControl.AlternationIndex valor. Você também pode usar gatilhos para alterar o valor da propriedade de um contêiner de item, dependendo do valor de seu ItemsControl.AlternationIndex.

Aplica-se a