Share via


ItemsControl.ItemsPanel Propriedade

Definição

Obtém ou define o modelo que define o painel que controla o layout dos itens.

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

Valor da propriedade

Um ItemsPanelTemplate que define o painel a ser usado para o layout dos itens. O valor padrão para o ItemsControl é um ItemsPanelTemplate que especifica um StackPanel.

Atributos

Exemplos

Para criar um horizontal ListBox, você pode criar um modelo que especifica um horizontal StackPanel e defini-lo como a ItemsPanel propriedade . O exemplo a seguir mostra um ListBoxStyle que cria um horizontal ListBox.

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

O exemplo a seguir usa um ControlTemplate para criar um horizontal ListBox que tenha cantos arredondados. Neste exemplo, em vez de definir a ItemsPanel propriedade como no exemplo anterior, o horizontal StackPanel é especificado dentro do ControlTemplate. A IsItemsHost propriedade é definida true como no StackPanel, indicando que os itens gerados devem ir para o painel. Quando você o especifica dessa forma, o ItemsPanel não pode ser substituído pelo usuário do controle sem usar um ControlTemplate. Portanto, faça isso somente se souber que não deseja que o painel seja substituído sem o uso de um modelo.

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

Como alternativa, você pode fazer o seguinte para obter os mesmos resultados. Nesse caso, o ItemsPresenter cria o painel para o layout dos itens com base no que é especificado pelo 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>

Comentários

Para o ListBox, o padrão ItemsPanelTemplate especifica o VirtualizingStackPanel. Para MenuItem, o padrão usa WrapPanel. Para StatusBar, o padrão usa DockPanel.

Para afetar o layout dos itens em um ItemsControl, use essa propriedade para especificar um ItemsPanelTemplate.

O ItemsControl fornece grande flexibilidade para personalização visual e fornece muitas propriedades de modelagem e estilo. Use a ItemContainerStyle propriedade ou a ItemContainerStyleSelector propriedade para definir um estilo para afetar a aparência dos elementos que contêm os itens de dados. Por exemplo, para ListBox, os contêineres gerados são ListBoxItem controles; para ComboBox, eles são ComboBoxItem controles. Se você estiver usando o agrupamento em seu controle, poderá usar a GroupStyle propriedade ou GroupStyleSelector . Para especificar a visualização dos objetos de dados, use a ItemTemplate propriedade ou ItemTemplateSelector . Para obter mais informações, consulte Visão geral da modelagem de dados.

Informações da propriedade de dependência

Campo Identificador ItemsPanelProperty
Propriedades de metadados definidas como true Nenhum

Aplica-se a