Compartir vía


ItemsControl.ItemsPanel Propiedad

Definición

Obtiene o establece la plantilla que define el panel que controla el diseño de los elementos.

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 propiedad

Un ItemsPanelTemplate que define el panel que se va a usar para el diseño de los elementos. El valor predeterminado de la ItemsControl es un ItemsPanelTemplate que especifica un StackPanel.

Atributos

Ejemplos

Para crear un ListBoxhorizontal, puede crear una plantilla que especifique un StackPanel horizontal y establézcalo como la propiedad ItemsPanel. En el ejemplo siguiente se muestra un ListBoxStyle que crea un ListBoxhorizontal.

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

En el ejemplo siguiente se usa un ControlTemplate para crear una ListBox horizontal que tenga esquinas redondeadas. En este ejemplo, en lugar de establecer la propiedad ItemsPanel como en el ejemplo anterior, se especifica el StackPanel horizontal dentro del ControlTemplate. La propiedad IsItemsHost se establece en true en el StackPanel, lo que indica que los elementos generados deben ir en el panel. Cuando se especifica de esta manera, el ItemsPanel no se puede reemplazar por el usuario del control sin usar un ControlTemplate. Por lo tanto, solo haga esto si sabe que no desea que el panel se reemplace sin el uso de una plantilla.

<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, puede hacer lo siguiente para lograr los mismos resultados. En este caso, el ItemsPresenter crea el panel para el diseño de los elementos en función de lo especificado por el 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>

Comentarios

Para el ListBox, el ItemsPanelTemplate predeterminado especifica el VirtualizingStackPanel. Para MenuItem, el valor predeterminado usa WrapPanel. Para StatusBar, el valor predeterminado usa DockPanel.

Para afectar al diseño de los elementos de un ItemsControl, use esta propiedad para especificar un ItemsPanelTemplate.

El ItemsControl proporciona una gran flexibilidad para la personalización visual y proporciona muchas propiedades de estilo y plantillas. Use la propiedad ItemContainerStyle o la propiedad ItemContainerStyleSelector para establecer un estilo que afecte a la apariencia de los elementos que contienen los elementos de datos. Por ejemplo, para ListBox, los contenedores generados son controles ListBoxItem; para ComboBox, son controles ComboBoxItem. Si usa la agrupación en el control, puede usar la propiedad GroupStyle o GroupStyleSelector. Para especificar la visualización de los objetos de datos, use el ItemTemplate o la propiedad ItemTemplateSelector. Para obtener más información, consulte Información general sobre plantillas de datos.

Información de la propiedad dependency

Campo identificador ItemsPanelProperty
Propiedades de metadatos establecidas en true Ninguno

Se aplica a