HierarchicalDataTemplate.AlternationCount Egenskap

Definition

Hämtar eller anger antalet alternerande objektcontainrar för de underordnade objekten.

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

Egenskapsvärde

Antalet alternerande objektcontainrar för nästa objektnivå.

Exempel

I följande exempel skapas en TreeView som är bunden till data som är tre nivåer djup och varje objekt visas i en TextBlock. Objekten TextBlock på den första nivån har samma egenskapsvärden, objekten TextBlock på den andra nivån använder alternerande värden för FontStyle egenskapen och objekten TextBlock på den tredje nivån använder alternerande värden för Background egenskapen.

HierarchicalDataTemplate Eftersom för den första nivån, Level1Data, har AlternationCount egenskapen inställd på 2, ItemsControl.AlternationIndex växlar för objekten TreeViewItem på den andra nivån mellan 0 och 1. HierarchicalDataTemplate I för den andra nivån Level2DataFontStyleär , är avständ TextBlock till ItemsControl.AlternationIndex och en AlternationConverter tillhandahålls för att konvertera ItemsControl.AlternationIndex till en alternerande FontStyle. En liknande relation finns mellan Level2Data och Level3Data: Är AlternationCount inställd på 3 på Level2Data, och TextBlock in Level3Ddata har sin Background egenskap bunden till ItemsControl.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>

Kommentarer

Med AlternationCount egenskaperna och ItemsControl.AlternationIndex kan du ange utseendet för två eller flera alternerande objektcontainrar. Du kan till exempel ange alternerande bakgrundsfärger för vart tredje objekt i en ItemsControl. ItemsControl.AlternationIndex Tilldelas till varje objektcontainer i ItemsControl. ItemsControl.AlternationIndex börjar vid 0, ökar tills den är AlternationCount minus 1 och startar sedan om vid 0. Om till exempel AlternationCount är 3 och det finns sju objekt i ItemsControl, visar ItemsControl.AlternationIndex följande tabell för varje objekt.

Positionen för objektet i ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

När du anger AlternationCount egenskapen anger du att de underordnade objekten ska få ett ItemsControl.AlternationIndex i det intervallet, inte det objekt som har detta HierarchicalDataTemplate tillämpat på det. Om en anropad HeaderedItemsControl till exempel använder en aHeaderedItemsControl med HierarchicalDataTemplate uppsättningen, kommer objektcontainrarna för de underordnade objekten AlternationCount i att ha en aHeaderedItemsControl, inte objektcontainern för ItemsControl.AlternationIndex.aHeaderedItemsControl

Det finns flera metoder som du kan använda för att ange olika utseenden för de alternerande objektcontainrarna. En metod är att binda egenskaperna för objektcontainern till ItemsControl.AlternationIndex. Du kan sedan använda en AlternationConverter för att ange vilket värde som ska tillämpas på objektcontainern som har ett visst ItemsControl.AlternationIndex värde. Du kan också använda utlösare för att ändra värdet för en objektcontainers egenskap beroende på värdet för dess ItemsControl.AlternationIndex.

Gäller för