ItemsControl.ItemTemplate Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el DataTemplate utilizado para mostrar cada elemento.
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; }
[<System.ComponentModel.Bindable(true)>]
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. De manera predeterminada, es null
.
- Atributos
Ejemplos
En el ejemplo siguiente se muestra cómo crear un DataTemplate elemento insertado.
DataTemplate especifica que cada elemento de datos aparece como tres TextBlock elementos dentro de .StackPanel En este ejemplo, el objeto de datos es una clase denominada Task
. Tenga en cuenta que cada TextBlock elemento de esta plantilla está enlazado a una propiedad de la Task
clase .
<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 elemento en la sección de recursos para que pueda ser un objeto reutilizable, como en el ejemplo siguiente:
<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:
<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.
Comentarios
ItemTemplate Use para especificar la visualización de los objetos de datos. ItemsControl Si está enlazado a un objeto de colección y no proporciona instrucciones de visualización específicas mediante , DataTemplatela interfaz de usuario resultante de cada elemento es una representación de cadena de cada objeto de la colección subyacente.
Cuando se establece un ItemTemplate en , ItemsControlla interfaz de usuario se genera de la siguiente manera (usando como ListBox ejemplo):
Durante la ItemsPanel generación de contenido, inicia una solicitud para ItemContainerGenerator que cree un contenedor para cada elemento de datos. Para ListBox, el contenedor es .ListBoxItem El generador vuelve a llamar a ItemsControl para preparar el contenedor.
Parte de la preparación implica la copia del ItemTemplate de ListBox que va a ser ContentTemplate de .ListBoxItem
De forma similar a todos los ContentControl tipos, el ControlTemplate objeto de ListBoxItem contiene un ContentPresenterobjeto . Cuando se aplica la plantilla, crea un ContentPresenter cuya propiedad ContentTemplate está enlazada a ContentTemplate de .ListBoxItem
Por último, se ContentPresenter aplica ContentTemplate a sí mismo y que crea la interfaz de usuario.
Si tiene más de un DataTemplate definido y desea proporcionar lógica para elegir y aplicar mediante programación un DataTemplate, use la ItemTemplateSelector propiedad .
ItemsControl Proporciona una gran flexibilidad para la personalización visual y proporciona muchas propiedades de estilo y plantillas. Utilice la ItemContainerStyle propiedad o la ItemContainerStyleSelector propiedad para establecer un estilo para afectar a la apariencia de los elementos que contienen los elementos de datos. Por ejemplo, para ListBox, los contenedores generados son ListBoxItem controles; para ComboBox, son ComboBoxItem controles. Para afectar al diseño de los elementos, use la ItemsPanel propiedad . Si usa la agrupación en el control, puede usar la GroupStyle propiedad o GroupStyleSelector .
Para más información, consulte Información general sobre plantillas de datos.
Uso de atributos XAML
<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>
Valores XAML
ResourceExtension Una de las siguientes: Extensión de marcado StaticResource o Extensión de marcado DynamicResource. A menos que los propios estilos contengan referencias a posibles referencias en tiempo de ejecución, como recursos del sistema o preferencias de usuario, normalmente se recomienda la referencia de la extensión de marcado StaticResource a un estilo para el rendimiento.
Valor de cadena de la directiva TemplateResourceKeyx:Key que hace referencia a la plantilla que se solicita como un recurso.
Información sobre propiedades de dependencia
Campo identificador | ItemTemplateProperty |
Propiedades de metadatos establecidas en true |
None |