HierarchicalDataTemplate.AlternationCount Özellik

Tanım

Alt öğeler için değişen öğe kapsayıcılarının sayısını alır veya ayarlar.

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

Özellik Değeri

Sonraki öğe düzeyi için değişen öğe kapsayıcılarının sayısı.

Örnekler

Aşağıdaki örnek, üç düzey derinliğindeki verilere bağlı bir TreeView oluşturur ve her öğe içinde TextBlockgörüntülenir. TextBlock birinci düzeydeki nesneler aynı özellik değerlerine sahiptir, ikinci düzeydeki TextBlock nesneler özellik için FontStyle değişen değerler kullanır ve TextBlock üçüncü düzeydeki nesneler özellik için Background alternatif değerler kullanır.

HierarchicalDataTemplate İlk düzey Level1DataAlternationCount için , özelliği 2 olarak ayarlandığından, ItemsControl.AlternationIndex ikinci düzeydeki TreeViewItem nesneler için 0 ile 1 arasında değişir. HierarchicalDataTemplate İkinci düzeyde, Level2DataFontStyle öğesinin TextBlock değeri öğesine bağlıdır ItemsControl.AlternationIndex ve AlternationConverter öğesini alternatif FontStylebir öğesine dönüştürmek ItemsControl.AlternationIndex için sağlanır. ile arasında Level2Data benzer bir ilişki vardır: üzerinde AlternationCount 3 Level2Dataolarak ayarlanır ve içindeki Level3Ddata öğesinin TextBlock özelliği ile ItemsControl.AlternationIndexilişkilidirBackground.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>

Açıklamalar

ve ItemsControl.AlternationIndex özellikleri, AlternationCount iki veya daha fazla değişen öğe kapsayıcısının görünümünü belirtmenizi sağlar. Örneğin, içindeki ItemsControlher üçüncü öğe için alternatif arka plan renkleri belirtebilirsiniz. içindeki ItemsControl.AlternationIndex her öğe kapsayıcısına ItemsControlatanır. ItemsControl.AlternationIndex 0'da başlar, eksi 1 olana AlternationCount kadar artar ve sonra 0'da yeniden başlatılır. Örneğin, 3 ise AlternationCount ve içinde ItemsControlyedi öğe varsa, aşağıdaki tabloda her öğenin listesi ItemsControl.AlternationIndex yer alır.

Öğenin konumu ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

özelliğini ayarladığınızdaAlternationCount, alt öğelerin bu öğeye uygulanmış olan öğeyi HierarchicalDataTemplate değil, bu aralıkta bir alması ItemsControl.AlternationIndex gerektiğini belirtirsiniz. Örneğin, bir çağrı kümesiyle birlikte bir kullanırsaHeaderedItemsControl, öğesinin alt öğelerinin aHeaderedItemsControl öğe kapsayıcıları için aHeaderedItemsControlöğe kapsayıcısı değil, öğesine ItemsControl.AlternationIndexsahip olur.HierarchicalDataTemplateAlternationCountaHeaderedItemsControl

Değişen öğe kapsayıcıları için farklı görünümler belirtmek için kullanabileceğiniz çeşitli yöntemler vardır. Yöntemlerden biri items kapsayıcısının özelliklerini öğesine bağlamaktır ItemsControl.AlternationIndex. Ardından, belirli ItemsControl.AlternationIndex bir değere sahip öğe kapsayıcısına hangi değerin uygulanacağını belirtmek için bir AlternationConverter kullanabilirsiniz. Tetikleyicileri, bir öğe kapsayıcısının özelliğinin değerine bağlı olarak değerini ItemsControl.AlternationIndexdeğiştirmek için de kullanabilirsiniz.

Şunlara uygulanır