ItemsControl.ItemTemplate Propriedade

Definição

Obtém ou define o DataTemplate usado para exibir cada item.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 da propriedade

Um DataTemplate que especifica a visualização dos objetos de dados.A DataTemplate that specifies the visualization of the data objects. O padrão é null.The default is null.

Atributos

Exemplos

O exemplo a seguir mostra como criar um DataTemplate embutido.The following example shows how to create a DataTemplate inline. O DataTemplate especifica que cada item de dados aparece como três elementos TextBlock dentro de um StackPanel.The DataTemplate specifies that each data item appears as three TextBlock elements within a StackPanel. Neste exemplo, o objeto de dados é uma classe chamada Task.In this example, the data object is a class called Task. Observe que cada elemento TextBlock neste modelo está associado a uma propriedade da classe 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>

É mais comum definir um DataTemplate na seção de recursos para que ele possa ser um objeto reutilizável, como no exemplo a seguir: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>

Agora, é possível usar o myTaskTemplate como recurso, como no exemplo a seguir: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 ver a amostra completa, consulte Amostra da introdução à modelagem de dados.For the complete sample, see Introduction to Data Templating Sample.

Comentários

Você usa o ItemTemplate para especificar a visualização dos objetos de dados.You use the ItemTemplate to specify the visualization of the data objects. Se o ItemsControl estiver associado a um objeto de coleção e você não fornecer instruções de exibição específicas usando uma DataTemplate, o Interface de UsuárioUI resultante de cada item será uma representação de cadeia de caracteres de cada objeto na coleção subjacente.If your ItemsControl is bound to a collection object and you do not provide specific display instructions using a DataTemplate, the resulting Interface de UsuárioUI of each item is a string representation of each object in the underlying collection.

Quando você define um ItemTemplate em um ItemsControl, o Interface de UsuárioUI é gerado da seguinte maneira (usando o ListBox como exemplo):When you set an ItemTemplate on an ItemsControl, the Interface de UsuárioUI is generated as follows (using the ListBox as an example):

  1. Durante a geração de conteúdo, o ItemsPanel inicia uma solicitação para que o ItemContainerGenerator crie um contêiner para cada item de dados.During content generation, the ItemsPanel initiates a request for the ItemContainerGenerator to create a container for each data item. Por ListBox, o contêiner é um ListBoxItem.For ListBox, the container is a ListBoxItem. O gerador chama de volta para o ItemsControl para preparar o contêiner.The generator calls back into the ItemsControl to prepare the container.

  2. Parte da preparação envolve a cópia do ItemTemplate da ListBox para ser a ContentTemplate do ListBoxItem.Part of the preparation involves the copying of the ItemTemplate of the ListBox to be the ContentTemplate of the ListBoxItem.

  3. Semelhante a todos os tipos de ContentControl, a ControlTemplate de um ListBoxItem contém uma ContentPresenter.Similar to all ContentControl types, the ControlTemplate of a ListBoxItem contains a ContentPresenter. Quando o modelo é aplicado, ele cria um ContentPresenter cujo ContentTemplate está associado à ContentTemplate do ListBoxItem.When the template is applied, it creates a ContentPresenter whose ContentTemplate is bound to the ContentTemplate of the ListBoxItem.

  4. Por fim, o ContentPresenter aplica essa ContentTemplate a si mesmo, e isso cria o Interface de UsuárioUI.Finally, the ContentPresenter applies that ContentTemplate to itself, and that creates the Interface de UsuárioUI.

Se você tiver mais de um DataTemplate definido e desejar fornecer lógica para escolher e aplicar programaticamente um DataTemplate, use a propriedade 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.

O ItemsControl fornece grande flexibilidade para a personalização visual e fornece muitas propriedades de estilo e modelagem.The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. Use a propriedade ItemContainerStyle ou a propriedade ItemContainerStyleSelector para definir um estilo para afetar a aparência dos elementos que contêm os itens de dados.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 exemplo, para ListBox, os contêineres gerados são controles de ListBoxItem; por ComboBox, eles são ComboBoxItem controles.For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls. Para afetar o layout dos itens, use a propriedade ItemsPanel.To affect the layout of the items, use the ItemsPanel property. Se você estiver usando o agrupamento em seu controle, poderá usar a propriedade GroupStyle ou GroupStyleSelector.If you are using grouping on your control, you can use the GroupStyle or GroupStyleSelector property.

Para obter mais informações, consulte Visão geral de modelagem de dados.For more information, see Data Templating Overview.

Uso do Atributo XAMLXAML Attribute Usage

<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>  

Valores XAMLXAML Values

ResourceExtensionResourceExtension
Um dos seguintes: extensão de marcação StaticResourceou extensão de marcação DynamicResource.One of the following: StaticResource Markup Extension, or DynamicResource Markup Extension. A menos que os próprios estilos contenham referências a possíveis referências de tempo de execução, como recursos do sistema ou preferências do usuário, a referência de extensão de marcação StaticResource a um estilo é geralmente recomendada para o desempenho.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
valor da cadeia de diretivas x:Key referente ao modelo que está sendo solicitado como um recurso.x:Key Directive string value referring to the template being requested as a resource.

Informações de Propriedade de DependênciaDependency Property Information

Campo de identificadorIdentifier field ItemTemplateProperty
Propriedades de metadados definidas como trueMetadata properties set to true NenhumNone

Aplica-se a

Veja também