次の方法で共有


ItemsControl.ItemsPanel プロパティ

定義

項目のレイアウトを制御するパネルを定義するテンプレートを取得または設定します。

public:
 property System::Windows::Controls::ItemsPanelTemplate ^ ItemsPanel { System::Windows::Controls::ItemsPanelTemplate ^ get(); void set(System::Windows::Controls::ItemsPanelTemplate ^ value); };
[System.ComponentModel.Bindable(false)]
public System.Windows.Controls.ItemsPanelTemplate ItemsPanel { get; set; }
[<System.ComponentModel.Bindable(false)>]
member this.ItemsPanel : System.Windows.Controls.ItemsPanelTemplate with get, set
Public Property ItemsPanel As ItemsPanelTemplate

プロパティ値

項目のレイアウトに使用するパネルを定義する ItemsPanelTemplateItemsControl の既定値は、StackPanelを指定する ItemsPanelTemplate です。

属性

水平方向の ListBoxを作成するには、水平方向の StackPanel を指定するテンプレートを作成し、ItemsPanel プロパティとして設定します。 次の例は、水平方向の ListBoxを作成する ListBoxStyle を示しています。

<Style TargetType="ListBox">
  <Setter Property="ItemsPanel">
    <Setter.Value>
      <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"
                    VerticalAlignment="Center"
                    HorizontalAlignment="Center"/>
      </ItemsPanelTemplate>
    </Setter.Value>
  </Setter>
</Style>

次の例では、ControlTemplate を使用して、角が丸い水平方向の ListBox を作成します。 この例では、前の例のように ItemsPanel プロパティを設定する代わりに、水平 StackPanelControlTemplate内で指定します。 IsItemsHost プロパティは、生成された項目がパネルに表示されることを示す、StackPaneltrue に設定されます。 この方法で指定した場合、ControlTemplateを使用しないと、ItemsPanel をコントロールのユーザーに置き換えることはできません。 したがって、テンプレートを使用せずにパネルを置き換えたくないことがわかっている場合にのみ、これを行います。

<Style TargetType="ListBox">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="ListBox">
        <Border CornerRadius="5" Background="{TemplateBinding ListBox.Background}">
          <ScrollViewer HorizontalScrollBarVisibility="Auto">
            <StackPanel Orientation="Horizontal"
                       VerticalAlignment="Center"
                       HorizontalAlignment="Center"
                       IsItemsHost="True"/>
          </ScrollViewer>
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

または、同じ結果を得るために次の操作を行うことができます。 この場合、ItemsPresenter は、ItemsPanelTemplateで指定された内容に基づいて項目のレイアウト用のパネルを作成します。

<Style TargetType="{x:Type ListBox}">
  <Setter Property="ItemsPanel">
    <Setter.Value>
      <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"
                     VerticalAlignment="Center"
                     HorizontalAlignment="Center"/>
      </ItemsPanelTemplate>
    </Setter.Value>
  </Setter>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type ListBox}">
        <Border CornerRadius="5"
                Background="{TemplateBinding ListBox.Background}">
          <ScrollViewer HorizontalScrollBarVisibility="Auto">
            <ItemsPresenter/>
          </ScrollViewer>
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

注釈

ListBoxの場合、既定の ItemsPanelTemplateVirtualizingStackPanelを指定します。 MenuItemの場合、既定では WrapPanelが使用されます。 StatusBarの場合、既定では DockPanelが使用されます。

ItemsControl内の項目のレイアウトに影響を与えるために、このプロパティを使用して ItemsPanelTemplateを指定します。

ItemsControl は、視覚的なカスタマイズに優れた柔軟性を提供し、多くのスタイル設定とテンプレートのプロパティを提供します。 データ項目を含む要素の外観に影響を与えるスタイルを設定するには、ItemContainerStyle プロパティまたは ItemContainerStyleSelector プロパティを使用します。 たとえば、ListBoxの場合、生成されたコンテナーは ListBoxItem コントロールです。ComboBoxの場合、これらは ComboBoxItem コントロールです。 コントロールでグループ化を使用している場合は、GroupStyle または GroupStyleSelector プロパティを使用できます。 データ オブジェクトの視覚化を指定するには、ItemTemplate または ItemTemplateSelector プロパティを使用します。 詳細については、「データ テンプレートの概要」を参照してください。

依存関係プロパティ情報

識別子フィールド ItemsPanelProperty
true に設定されたメタデータ プロパティ 何一つ

適用対象