ItemsControl.ItemsPanel Propriedade

Definição

Obtém ou define o modelo que define o painel que controla a disposição 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 de Propriedade

Um ItemsPanelTemplate que define o painel a usar para a disposição dos itens. O valor padrão para o ItemsControl é um ItemsPanelTemplate que especifica um StackPanel.

Atributos

Exemplos

Para criar uma horizontal ListBox, pode criar um modelo que especifique uma horizontal StackPanel e defini-la como a ItemsPanel propriedade. O exemplo seguinte 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 seguinte usa a ControlTemplate para criar uma horizontal ListBox com cantos arredondados. Neste exemplo, em vez de definir a ItemsPanel propriedade como no exemplo anterior, a horizontal StackPanel é especificada dentro do ControlTemplate. A IsItemsHost propriedade está definida para true em , StackPanelindicando que os itens gerados devem ir no painel. Quando se especifica desta forma, o ItemsPanel não pode ser substituído pelo utilizador do controlo sem usar um ControlTemplate. Por isso, só faça isto se souber que não gostaria que o painel fosse 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>

Em alternativa, pode fazer o seguinte para obter os mesmos resultados. Neste caso, o ItemsPresenter cria o painel para a disposição 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>

Observações

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 a disposição dos itens num ItemsControl, usa esta propriedade para especificar um ItemsPanelTemplate.

Oferece ItemsControl grande flexibilidade para personalização visual e oferece muitas propriedades de estilo e modelagem. Usas a ItemContainerStyle propriedade ou a ItemContainerStyleSelector propriedade para definir um estilo que afete a aparência dos elementos que contêm os itens de dados. Por exemplo, para ListBox, os contentores gerados são ListBoxItem controlos; para ComboBox, são ComboBoxItem controlos. Se estiveres a usar agrupamento no teu controlo, podes usar a GroupStyle propriedade ou.GroupStyleSelector Para especificar a visualização dos objetos de dados, use a ItemTemplate ou a ItemTemplateSelector propriedade. Para mais informações, consulte Visão Geral da Templação de Dados.

Informação de Propriedade de Dependência

Item Value
Campo identificador ItemsPanelProperty
Propriedades dos metadados definidas como true None

Aplica-se a