Partilhar 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 do ItemsControl é um ItemsPanelTemplate que especifica um StackPanel.

Atributos

Exemplos

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

<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 uma ListBox horizontal que tenha cantos arredondados. Neste exemplo, em vez de definir a propriedade ItemsPanel como no exemplo anterior, o StackPanel horizontal é especificado no ControlTemplate. A propriedade IsItemsHost é definida como true 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 ItemsPanelTemplate padrão 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 oferece grande flexibilidade para personalização visual e fornece muitas propriedades de modelagem e estilo. Use a propriedade ItemContainerStyle ou a propriedade ItemContainerStyleSelector 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 propriedade GroupStyle ou GroupStyleSelector. Para especificar a visualização dos objetos de dados, use o ItemTemplate ou a propriedade ItemTemplateSelector. Para obter mais informações, consulte Visão geral da modelagem de dados.

Informações da propriedade Dependency

Campo identificador ItemsPanelProperty
Propriedades de metadados definidas como true Nenhum

Aplica-se a