次の方法で共有


GroupStyle.AlternationCount プロパティ

定義

代替 GroupItem オブジェクトの数を取得または設定します。

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

プロパティ値

代替 GroupItem オブジェクトの数。

次の例では、コレクション内の ListBox 項目をグループにする に CollectionViewSource バインドされた を作成します。 この例では、次の手順を実行して、2 つの色のヘッダーの GroupItem 背景を切り替える。

この例では、 に を設定AlternationCountListBoxし、それぞれの ListBox の を にバインドBackgroundすることで、 の項目ListBoxの背景を 3 つの色の間で切りItemsControl.AlternationIndex替えます。 この場合、背景は 3 つの色で交互に表示されます。

CollectionViewSource項目をグループにする は表示されません。 項目をグループ化する方法については、「 方法: XAML でビューを使用してデータを並べ替え、グループ化する」を参照してください。

<StackPanel>

  <StackPanel.Resources>

    <!--Returns a Brush for the header of a GroupItem.-->
    <AlternationConverter x:Key="GroupHeaderBackgroundConverter">
      <SolidColorBrush>LightBlue</SolidColorBrush>
      <SolidColorBrush>LightSteelBlue</SolidColorBrush>
    </AlternationConverter>

    <!--Returns a Brush for a ListBoxItem.-->
    <AlternationConverter x:Key="BackgroundConverter">
      <SolidColorBrush>Silver</SolidColorBrush>
      <SolidColorBrush>LightGray</SolidColorBrush>
      <SolidColorBrush>GhostWhite</SolidColorBrush>
    </AlternationConverter>

  </StackPanel.Resources>

  <ListBox ItemsSource="{Binding Source={StaticResource groupedData}}"
           DisplayMemberPath="CityName" AlternationCount="3" Name="lb">

    <ListBox.GroupStyle>
      <!--Set alternating backgrounds on the header of each group.-->
      <GroupStyle AlternationCount="2">
        <GroupStyle.HeaderTemplate>
          <DataTemplate>
            <TextBlock FontWeight="Bold" 
                       Text="{Binding Path=Name}" 
                       Background="{Binding 
                           RelativeSource={RelativeSource FindAncestor, 
                           AncestorType={x:Type GroupItem}},
                           Path=(ItemsControl.AlternationIndex),
                           Converter={StaticResource 
                                      GroupHeaderBackgroundConverter}}"/>
          </DataTemplate>
        </GroupStyle.HeaderTemplate>
      </GroupStyle>
    </ListBox.GroupStyle>

    <ListBox.ItemContainerStyle>
      <!--Set alternating backgrounds on the items in the ListBox.-->
      <Style TargetType="{x:Type ListBoxItem}">
        <Setter Property="Background" 
                Value="{Binding RelativeSource={RelativeSource Self},
                     Path=(ItemsControl.AlternationIndex),
                     Converter={StaticResource BackgroundConverter}}"/>
      </Style>
    </ListBox.ItemContainerStyle>
  </ListBox>
</StackPanel>

注釈

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

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

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

適用対象