ItemsControl.ItemsPanel プロパティ

定義

項目のレイアウトを制御するパネルを定義するテンプレートを取得または設定します。Gets or sets the template that defines the panel that controls the layout of items.

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; }
member this.ItemsPanel : System.Windows.Controls.ItemsPanelTemplate with get, set
Public Property ItemsPanel As ItemsPanelTemplate

プロパティ値

項目のレイアウトに使用するパネルを定義する ItemsPanelTemplateAn ItemsPanelTemplate that defines the panel to use for the layout of the items. ItemsControl の既定値は、ItemsPanelTemplate を指定する StackPanel です。The default value for the ItemsControl is an ItemsPanelTemplate that specifies a StackPanel.

属性

水平方向の ListBoxを作成するには、水平方向の StackPanel を指定するテンプレートを作成し、それを ItemsPanel プロパティとして設定します。To create a horizontal ListBox, you can create a template that specifies a horizontal StackPanel and set it as the ItemsPanel property. 次の例は、水平 ListBoxを作成する Style ListBox を示しています。The following example shows a ListBox Style that creates a horizontal ListBox.

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

次の例では、ControlTemplate を使用して、角が丸くなる水平方向の ListBox を作成します。The following example uses a ControlTemplate to create a horizontal ListBox that has rounded corners. この例では、前の例のように ItemsPanel プロパティを設定するのではなく、ControlTemplate内で水平 StackPanel を指定しています。In this example, instead of setting the ItemsPanel property as in previous example, the horizontal StackPanel is specified within the ControlTemplate. IsItemsHost プロパティは StackPaneltrue に設定されます。これは、生成された項目がパネルに表示されることを示します。The IsItemsHost property is set to true on the StackPanel, indicating that the generated items should go in the panel. このように指定すると、ControlTemplateを使用せずに、コントロールのユーザーが ItemsPanel を置き換えることはできません。When you specify it this way, the ItemsPanel cannot be replaced by the user of the control without using a ControlTemplate. したがって、テンプレートを使用せずにパネルを置き換える必要がないことがわかっている場合にのみ、この操作を行います。Therefore, only do this if you know you would not want the panel to be replaced without the use of a template.

<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>

または、次の操作を行っても同じ結果が得られます。Alternatively, you can do the following to achieve the same results. この場合、ItemsPresenter は、ItemsPanelTemplateによって指定された内容に基づいて、項目のレイアウト用のパネルを作成します。In this case, the ItemsPresenter creates the panel for the layout of the items based on what is specified by the 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の場合、既定の ItemsPanelTemplate によって VirtualizingStackPanelが指定されます。For the ListBox, the default ItemsPanelTemplate specifies the VirtualizingStackPanel. MenuItemの場合、既定では WrapPanelが使用されます。For MenuItem, the default uses WrapPanel. StatusBarの場合、既定では DockPanelが使用されます。For StatusBar, the default uses DockPanel.

ItemsControl内の項目のレイアウトに影響を与えるには、このプロパティを使用して ItemsPanelTemplateを指定します。To affect the layout of the items in an ItemsControl, you use this property to specify a ItemsPanelTemplate.

ItemsControl により、ビジュアルのカスタマイズが非常に柔軟になり、多くのスタイル設定とテンプレートプロパティが提供されます。The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. データ項目を含む要素の外観に影響を与えるスタイルを設定するには、ItemContainerStyle プロパティまたは ItemContainerStyleSelector プロパティを使用します。You use the ItemContainerStyle property or the ItemContainerStyleSelector property to set a style to affect the appearance of the elements that contain the data items. たとえば、ListBoxの場合、生成されたコンテナーはコントロール ListBoxItem ます。ComboBoxの場合、コントロールは ComboBoxItem ます。For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls. コントロールで grouping を使用している場合は、GroupStyle または GroupStyleSelector プロパティを使用できます。If you are using grouping on your control, you can use the GroupStyle or GroupStyleSelector property. データオブジェクトの視覚化を指定するには、ItemTemplate または ItemTemplateSelector プロパティを使用します。To specify the visualization of the data objects, use the ItemTemplate or the ItemTemplateSelector property. 詳しくは「 データ テンプレートの概要」をご覧ください。For more information, see Data Templating Overview.

依存プロパティ情報Dependency Property Information

識別子フィールドIdentifier field ItemsPanelProperty
メタデータプロパティが true に設定されるMetadata properties set to true なしNone

適用対象

こちらもご覧ください