Esta documentación está archivada y no tiene mantenimiento.

ItemsControl (Clase)

Actualización: Julio de 2008

Representa un control que se puede utilizar para presentar una recolección de elementos.

Espacio de nombres:  System.Windows.Controls
Ensamblado:  PresentationFramework (en PresentationFramework.dll)
XMLNS para XAML: http://schemas.microsoft.com/winfx/xaml/presentation

[ContentPropertyAttribute("Items")]
[LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)]
[StyleTypedPropertyAttribute(Property = "ItemContainerStyle", StyleTargetType = typeof(FrameworkElement))]
public class ItemsControl : Control, 
	IAddChild
/** @attribute ContentPropertyAttribute("Items") */
/** @attribute LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable) */
/** @attribute StyleTypedPropertyAttribute(Property = "ItemContainerStyle", StyleTargetType = FrameworkElement) */
public class ItemsControl extends Control implements IAddChild
public class ItemsControl extends Control implements IAddChild
<ItemsControl>
  Items
</ItemsControl>

Modelo de contenido: al agregar un elemento secundario a un objeto ItemsControl, se agrega implícitamente a ItemCollection para el objeto ItemsControl. Para obtener más información acerca del modelo de contenido de ItemsControl, vea Información general sobre el modelo de contenido de controles.

Observe que se utiliza la propiedad Items o ItemsSource para especificar la recolección que se debería utilizar para generar el contenido de ItemsControl. Cuando se establece la propiedad ItemsSource, la recolección Items se hará de sólo lectura y de tamaño fijo. Esto significa que no puede agregar directamente elementos a la recolección.

Cuando ItemsSource está en uso, al establecer la propiedad en null, se quita la recolección y se restaura el uso a Items, que será un ItemCollection vacío.

Cada tipo de ItemsControl tiene un tipo de contenedor correspondiente. Los elementos contenedores son los objetos que contienen los elementos de datos en la recolección de elementos. Por ejemplo, para ListBox, los contenedores generados son controles ListBoxItem; para ComboBox, son controles ComboBoxItem.

ItemsControl genera sus elementos mediante la interfaz IItemContainerGenerator. La propiedad ItemContainerGenerator de ItemsControl es de tipo ItemContainerGenerator, que implementa la interfaz IItemContainerGenerator. Por consiguiente, puede tener acceso al objeto ItemContainerGenerator asociado a ItemsControl mediante la propiedad ItemContainerGenerator. Por ejemplo, si tiene un TreeView enlazado a datos y desea obtener TreeViewItem basado en su índice o su elemento de datos asociado, puede utilizar el método ItemContainerGenerator.ContainerFromIndex o ItemContainerGenerator.ContainerFromItem. Como alternativa, puede utilizar el método ItemContainerGenerator.IndexFromContainer o ItemContainerGenerator.ItemFromContainer para obtener el índice o el elemento de datos asociado a un elemento contenedor generado determinado.

Además de esos usos, la interfaz IItemContainerGenerator se utiliza en escenarios avanzados. Normalmente, las aplicaciones avanzadas que tienen su propia implementación de un panel de virtualización llaman a los miembros de la interfaz.

El ejemplo siguiente está diseñado para mostrar la función de las diferentes propiedades relacionadas con los estilos y la creación de plantillas, proporcionadas por ItemsControl. ItemsControl de este ejemplo está enlazado a una recolección de objetos Task. Para fines demostrativos, los estilos y las plantillas de este ejemplo están todos declarados inline.

<ItemsControl Margin="10"
              ItemsSource="{Binding Source={StaticResource myTodoList}}">
  <!--The ItemsControl has no default visual appearance.
      Use the Template property to specify a ControlTemplate to define
      the appearance of an ItemsControl. The ItemsPresenter uses the specified
      ItemsPanelTemplate (see below) to layout the items. If an
      ItemsPanelTemplate is not specified, the default is used. (For ItemsControl,
      the default is an ItemsPanelTemplate that specifies a StackPanel.-->
  <ItemsControl.Template>
    <ControlTemplate TargetType="ItemsControl">
      <Border BorderBrush="Aqua" BorderThickness="1" CornerRadius="15">
        <ItemsPresenter/>
      </Border>
    </ControlTemplate>
  </ItemsControl.Template>
  <!--Use the ItemsPanel property to specify an ItemsPanelTemplate
      that defines the panel that is used to hold the generated items.
      In other words, use this property if you want to affect
      how the items are laid out.-->
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <!--Use the ItemTemplate to set a DataTemplate to define
      the visualization of the data objects. This DataTemplate
      specifies that each data object appears with the Proriity
      and TaskName on top of a silver ellipse.-->
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <DataTemplate.Resources>
        <Style TargetType="TextBlock">
          <Setter Property="FontSize" Value="18"/>
          <Setter Property="HorizontalAlignment" Value="Center"/>
        </Style>
      </DataTemplate.Resources>
      <Grid>
        <Ellipse Fill="Silver"/>
        <StackPanel>
          <TextBlock Margin="3,3,3,0"
                     Text="{Binding Path=Priority}"/>
          <TextBlock Margin="3,0,3,7"
                     Text="{Binding Path=TaskName}"/>
        </StackPanel>
      </Grid>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
  <!--Use the ItemContainerStyle property to specify the appearance
      of the element that contains the data. This ItemContainerStyle
      gives each item container a margin and a width. There is also
      a trigger that sets a tooltip that shows the description of
      the data object when the mouse hovers over the item container.-->
  <ItemsControl.ItemContainerStyle>
    <Style>
      <Setter Property="Control.Width" Value="100"/>
      <Setter Property="Control.Margin" Value="5"/>
      <Style.Triggers>
        <Trigger Property="Control.IsMouseOver" Value="True">
          <Setter Property="Control.ToolTip"
                  Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                          Path=Content.Description}"/>
        </Trigger>
      </Style.Triggers>
    </Style>
  </ItemsControl.ItemContainerStyle>
</ItemsControl>


A continuación, se muestra una captura de pantalla del ejemplo cuando se representa:

Captura de pantalla de ejemplo ItemsControl

Dos otras propiedades relacionadas con el estilo de ItemsControl que no se muestran aquí son GroupStyle y GroupStyleSelector.

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
      System.Windows.Media.Visual
        System.Windows.UIElement
          System.Windows.FrameworkElement
            System.Windows.Controls.Control
              System.Windows.Controls.ItemsControl
                System.Windows.Controls.HeaderedItemsControl
                System.Windows.Controls.Primitives.MenuBase
                System.Windows.Controls.Primitives.Selector
                System.Windows.Controls.Primitives.StatusBar
                System.Windows.Controls.TreeView

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0
Mostrar: