ItemsControl.ItemTemplate Propiedad

Definición

Obtiene o establece el DataTemplate utilizado para mostrar cada elemento.Gets or sets the DataTemplate used to display each item.

public:
 property System::Windows::DataTemplate ^ ItemTemplate { System::Windows::DataTemplate ^ get(); void set(System::Windows::DataTemplate ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.DataTemplate ItemTemplate { get; set; }
member this.ItemTemplate : System.Windows.DataTemplate with get, set
Public Property ItemTemplate As DataTemplate

Valor de propiedad

DataTemplate

DataTemplate que especifica la visualización de los objetos de datos.A DataTemplate that specifies the visualization of the data objects. El valor predeterminado es null.The default is null.

Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo crear una DataTemplate insertada.The following example shows how to create a DataTemplate inline. La DataTemplate especifica que cada elemento de datos aparece como tres elementos TextBlock dentro de un StackPanel.The DataTemplate specifies that each data item appears as three TextBlock elements within a StackPanel. En este ejemplo, el objeto de datos es una clase denominada Task.In this example, the data object is a class called Task. Tenga en cuenta que cada TextBlock elemento de esta plantilla se enlaza a una propiedad de la clase Task.Note that each TextBlock element in this template is bound to a property of the Task class.

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}">
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel>
         <TextBlock Text="{Binding Path=TaskName}" />
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Priority}"/>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>

Es más común definir un DataTemplate en la sección de recursos para que pueda ser un objeto reutilizable, como en el ejemplo siguiente:It is more common to define a DataTemplate in the resources section so it can be a reusable object, as in the following example:

<Window.Resources>
<DataTemplate x:Key="myTaskTemplate">
  <StackPanel>
    <TextBlock Text="{Binding Path=TaskName}" />
    <TextBlock Text="{Binding Path=Description}"/>
    <TextBlock Text="{Binding Path=Priority}"/>
  </StackPanel>
</DataTemplate>
</Window.Resources>

Ahora puede usar myTaskTemplate como recurso, como en el ejemplo siguiente:Now you can use myTaskTemplate as a resource, as in the following example:

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplate="{StaticResource myTaskTemplate}"/>

Para obtener el ejemplo completo, vea Introducción a la aplicación de plantillas de ejemplo.For the complete sample, see Introduction to Data Templating Sample.

Comentarios

El ItemTemplate se utiliza para especificar la visualización de los objetos de datos.You use the ItemTemplate to specify the visualization of the data objects. Si el ItemsControl se enlaza a un objeto de colección y no proporciona instrucciones de presentación específicas mediante un DataTemplate, el IUUI resultante de cada elemento es una representación de cadena de cada objeto de la colección subyacente.If your ItemsControl is bound to a collection object and you do not provide specific display instructions using a DataTemplate, the resulting IUUI of each item is a string representation of each object in the underlying collection.

Cuando se establece una ItemTemplate en un ItemsControl, el IUUI se genera como se indica a continuación (mediante el ListBox como ejemplo):When you set an ItemTemplate on an ItemsControl, the IUUI is generated as follows (using the ListBox as an example):

  1. Durante la generación de contenido, el ItemsPanel inicia una solicitud para que la ItemContainerGenerator cree un contenedor para cada elemento de datos.During content generation, the ItemsPanel initiates a request for the ItemContainerGenerator to create a container for each data item. Por ListBox, el contenedor es un ListBoxItem.For ListBox, the container is a ListBoxItem. El generador vuelve a llamar al ItemsControl para preparar el contenedor.The generator calls back into the ItemsControl to prepare the container.

  2. Parte de la preparación implica la copia de la ItemTemplate del ListBox para que sea la ContentTemplate del ListBoxItem.Part of the preparation involves the copying of the ItemTemplate of the ListBox to be the ContentTemplate of the ListBoxItem.

  3. De forma similar a todos los tipos de ContentControl, el ControlTemplate de una ListBoxItem contiene una ContentPresenter.Similar to all ContentControl types, the ControlTemplate of a ListBoxItem contains a ContentPresenter. Cuando se aplica la plantilla, se crea un ContentPresenter cuyo ContentTemplate está enlazado al ContentTemplate del ListBoxItem.When the template is applied, it creates a ContentPresenter whose ContentTemplate is bound to the ContentTemplate of the ListBoxItem.

  4. Por último, el ContentPresenter aplica el ContentTemplate a sí mismo y que crea el IUUI.Finally, the ContentPresenter applies that ContentTemplate to itself, and that creates the IUUI.

Si tiene más de una DataTemplate definida y desea proporcionar lógica para elegir y aplicar un DataTemplatemediante programación, use la propiedad ItemTemplateSelector.If you have more than one DataTemplate defined and you want to supply logic to programmatically choose and apply a DataTemplate, use the ItemTemplateSelector property.

El ItemsControl proporciona una gran flexibilidad para la personalización visual y proporciona muchas propiedades de estilo y plantillas.The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. 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.Use the ItemContainerStyle property or the ItemContainerStyleSelector property to set a style to affect the appearance of the elements that contain the data items. Por ejemplo, para ListBox, los contenedores generados son ListBoxItem controles; por ComboBox, son controles de ComboBoxItem.For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls. Para afectar al diseño de los elementos, use la propiedad ItemsPanel.To affect the layout of the items, use the ItemsPanel property. Si está utilizando la agrupación en el control, puede usar la propiedad GroupStyle o GroupStyleSelector.If you are using grouping on your control, you can use the GroupStyle or GroupStyleSelector property.

Para obtener más información, consulte Información general sobre plantillas de datos.For more information, see Data Templating Overview.

Uso de atributos XAMLXAML Attribute Usage

<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>  

Valores XAMLXAML Values

ResourceExtensionResourceExtension
Una de las siguientes: extensión de marcado StaticResourceo extensión de marcado DynamicResource.One of the following: StaticResource Markup Extension, or DynamicResource Markup Extension. A menos que los propios estilos contengan referencias a posibles referencias en tiempo de ejecución, como recursos del sistema o preferencias del usuario, la referencia de extensión de marcado StaticResource a un estilo suele ser recomendable para el rendimiento.Unless the styles themselves contain references to potential run-time references such as system resources or user preferences, StaticResource Markup Extension reference to a style is usually recommended for performance.

TemplateResourceKeyTemplateResourceKey
x:Key : valor de cadena que hace referencia a la plantilla que se solicita como recurso.x:Key Directive string value referring to the template being requested as a resource.

Información sobre propiedades de dependenciaDependency Property Information

Campo de identificadorIdentifier field ItemTemplateProperty
Propiedades de metadatos establecidas en trueMetadata properties set to true NoneNone

Se aplica a

Consulte también: