ItemsControl.ItemTemplate ItemsControl.ItemTemplate ItemsControl.ItemTemplate ItemsControl.ItemTemplate Property

Definición

Obtiene o establece DataTemplate que se utiliza 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 que especifica la visualización de los objetos de datos.A DataTemplate that specifies the visualization of the data objects. De manera predeterminada, es null.The default is null.

Ejemplos

El ejemplo siguiente muestra cómo crear un DataTemplate en línea.The following example shows how to create a DataTemplate inline. El DataTemplate especifica que cada elemento de datos aparece como tres TextBlock elementos 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 llamada Task.In this example, the data object is a class called Task. Tenga en cuenta que cada TextBlock elemento en esta plantilla se enlaza a una propiedad de la Task clase.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 para definir un DataTemplate en la sección de recursos, por lo que puede 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

Usa el ItemTemplate para especificar la visualización de los objetos de datos.You use the ItemTemplate to specify the visualization of the data objects. Si su ItemsControl está enlazado a una colección de objetos y no proporciona instrucciones de pantalla específico mediante un DataTemplate, resultante IUUI 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.

Al establecer un ItemTemplate en un ItemsControl, el IUUI se genera como sigue (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 el ItemContainerGenerator para crear 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. Para ListBox, el contenedor es un ListBoxItem.For ListBox, the container is a ListBoxItem. El generador de llama de nuevo en el 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 de la ListBox sea la ContentTemplate de la ListBoxItem.Part of the preparation involves the copying of the ItemTemplate of the ListBox to be the ContentTemplate of the ListBoxItem.

  3. Similar a todos los ContentControl tipos, el ControlTemplate de un ListBoxItem contiene un ContentPresenter.Similar to all ContentControl types, the ControlTemplate of a ListBoxItem contains a ContentPresenter. Cuando se aplica la plantilla, crea un ContentPresenter cuyo ContentTemplate está enlazado a la ContentTemplate de la 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 que aplica ContentTemplate a sí misma, 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 definido y desea proporcionar una lógica que elija y se aplican mediante programación un DataTemplate, utilice el ItemTemplateSelector propiedad.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 gran flexibilidad para la personalización visual y proporciona muchas propiedades aplicar estilos y plantillas.The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. Use la ItemContainerStyle propiedad o el ItemContainerStyleSelector propiedad para establecer un estilo que afectan 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 controla; para ComboBox, son ComboBoxItem controles.For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls. Para afectar al diseño de los elementos, utilice el ItemsPanel propiedad.To affect the layout of the items, use the ItemsPanel property. Si se utiliza la agrupación en el control, puede usar el GroupStyle o GroupStyleSelector propiedad.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
Uno de los siguientes: Extensión de marcado StaticResource, o extensión de marcado DynamicResource.One of the following: StaticResource Markup Extension, or DynamicResource Markup Extension. A menos que los estilos contengan referencias a posibles referencias de tiempo de ejecución, como los recursos del sistema o las preferencias del usuario, StaticResource Markup Extension referencia a un estilo general, se recomienda 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 Directive valor de cadena que hace referencia a la plantilla que se solicita como un 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
Establecen las propiedades de metadatos en trueMetadata properties set to true NoneNone

Se aplica a

Consulte también: