Condividi tramite


ItemsControl.ItemsPanel Proprietà

Definizione

Ottiene o imposta il modello che definisce il pannello che controlla il layout degli elementi.

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

Valore della proprietà

Oggetto ItemsPanelTemplate che definisce il pannello da utilizzare per il layout degli elementi. Il valore predefinito per il ItemsControl è un ItemsPanelTemplate che specifica un StackPanel.

Attributi

Esempio

Per creare un ListBoxorizzontale, è possibile creare un modello che specifica un StackPanel orizzontale e impostarlo come proprietà ItemsPanel. Nell'esempio seguente viene illustrato un ListBoxStyle che crea un ListBoxorizzontale.

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

Nell'esempio seguente viene utilizzata una ControlTemplate per creare un ListBox orizzontale con angoli arrotondati. In questo esempio, anziché impostare la proprietà ItemsPanel come nell'esempio precedente, il StackPanel orizzontale viene specificato all'interno del ControlTemplate. La proprietà IsItemsHost è impostata su true nella StackPanel, a indicare che gli elementi generati devono essere inseriti nel pannello. Quando si specifica in questo modo, il ItemsPanel non può essere sostituito dall'utente del controllo senza utilizzare un ControlTemplate. Pertanto, eseguire questa operazione solo se si sa che non si vuole che il pannello venga sostituito senza l'uso di un modello.

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

In alternativa, è possibile eseguire le operazioni seguenti per ottenere gli stessi risultati. In questo caso, il ItemsPresenter crea il pannello per il layout degli elementi in base a quanto specificato dal 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>

Commenti

Per il ListBox, il ItemsPanelTemplate predefinito specifica il VirtualizingStackPanel. Per MenuItem, il valore predefinito usa WrapPanel. Per StatusBar, il valore predefinito usa DockPanel.

Per influire sul layout degli elementi in un ItemsControl, utilizzare questa proprietà per specificare un ItemsPanelTemplate.

Il ItemsControl offre una grande flessibilità per la personalizzazione visiva e offre molte proprietà di applicazione di stili e modelli. Utilizzare la proprietà ItemContainerStyle o la proprietà ItemContainerStyleSelector per impostare uno stile per influire sull'aspetto degli elementi che contengono gli elementi di dati. Ad esempio, per ListBox, i contenitori generati sono ListBoxItem controlli; per ComboBox, sono controlli ComboBoxItem. Se si utilizza il raggruppamento nel controllo, è possibile utilizzare la proprietà GroupStyle o GroupStyleSelector. Per specificare la visualizzazione degli oggetti dati, utilizzare il ItemTemplate o la proprietà ItemTemplateSelector. Per altre informazioni, vedere Panoramica modelli di dati.

Informazioni sulle proprietà di dipendenza

Campo Identificatore ItemsPanelProperty
Proprietà dei metadati impostate su true Nessuno

Si applica a