次の方法で共有


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

プロパティ値

項目の次のレベルに対する代替項目コンテナーの数。

次の例では、 TreeView 3 つのレベルの深いデータにバインドされた を作成し、各項目を に TextBlock表示します。 最初のレベルのオブジェクトは TextBlock 同じプロパティ値を持ち、2 番目の TextBlock レベルのオブジェクトは プロパティに交互の値を FontStyle 使用し TextBlock 、3 番目のレベルのオブジェクトは プロパティに交互の値を Background 使用します。

HierarchicalDataTemplate最初のレベルLevel1Dataの は プロパティを AlternationCount 2 に設定しているため、ItemsControl.AlternationIndexTreeViewItem 2 番目のレベルの オブジェクトの は 0 から 1 の間で交互に使用されます。 HierarchicalDataTemplate 2 番目のレベルLevel2DataFontStyleの では、 の TextBlock が にItemsControl.AlternationIndexバインドされAlternationConverter、 が交互FontStyleに に変換ItemsControl.AlternationIndexするために が提供されます。 と の間 Level2Data にも同様のリレーションシップが存在します Level3DataAlternationCount は で Level2Data3 に設定され、 TextBlockLevel3Ddata プロパティは BackgroundItemsControl.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>

注釈

AlternationCountプロパティと ItemsControl.AlternationIndex プロパティを使用すると、2 つ以上の交互の項目コンテナーの外観を指定できます。 たとえば、 の 3 つ目の項目ごとに背景色を交互に ItemsControl指定できます。 ItemsControl.AlternationIndexは、 内の各項目コンテナーにItemsControl割り当てられます。 ItemsControl.AlternationIndex は 0 から始まり、マイナス 1 になるまで AlternationCount 増分し、0 で再起動します。 たとえば、 が 3 で、 に ItemsControl7 つの項目がある場合AlternationCountは、次の表に各項目の の一覧をItemsControl.AlternationIndex示します。

内の項目の位置 ItemsControl ItemsControl.AlternationIndex
1 0
2 1
3 2
4 0
5 1
6 2
7 0

プロパティをAlternationCount設定すると、子項目は、このHierarchicalDataTemplateプロパティに適用されている項目ではなく、その範囲内の を取得ItemsControl.AlternationIndexする必要があることを示します。 たとえば、呼び出された aHeaderedItemsControlHeaderedItemsControl セットと共に をHierarchicalDataTemplateAlternationCount使用する場合、 の子項目aHeaderedItemsControlの項目コンテナーには、 のaHeaderedItemsControl項目コンテナーではなく、 が含ItemsControl.AlternationIndexまれます。

交互の項目コンテナーに異なる外観を指定するために使用できる方法はいくつかあります。 1 つの方法は、items コンテナーのプロパティを にバインドすることです ItemsControl.AlternationIndex。 その後、 を AlternationConverter 使用して、特定 ItemsControl.AlternationIndex の値を持つ項目コンテナーに適用する値を指定できます。 トリガーを使用して、 の値に応じて項目コンテナーのプロパティの ItemsControl.AlternationIndex値を変更することもできます。

適用対象