HierarchicalDataTemplate.AlternationCount Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.