ItemsControl.ItemTemplate Egenskap

Definition

Hämtar eller anger det DataTemplate som används för att visa varje objekt.

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

Egenskapsvärde

En DataTemplate som anger visualiseringen av dataobjekten. Standardvärdet är null.

Attribut

Exempel

I följande exempel visas hur du skapar en DataTemplate infogad. DataTemplate Anger att varje dataobjekt visas som tre TextBlock element i en StackPanel. I det här exemplet är dataobjektet en klass med namnet Task. Observera att varje TextBlock element i den här mallen är bundet till en egenskap för Task klassen.

<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>

Det är vanligare att definiera en DataTemplate i resursavsnittet så att det kan vara ett återanvändbart objekt, som i följande exempel:

<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>

Nu kan du använda myTaskTemplate som en resurs, som i följande exempel:

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

För det kompletta exemplet, se Introduktion till datamall-exemplet.

Kommentarer

Du använder ItemTemplate för att ange visualiseringen av dataobjekten. Om ditt ItemsControl är bundet till ett samlingsobjekt och du inte anger specifika visningsinstruktioner med hjälp av ett DataTemplateär det resulterande användargränssnittet för varje objekt en strängrepresentation av varje objekt i den underliggande samlingen.

När du anger en ItemTemplate på en ItemsControlgenereras användargränssnittet på följande sätt (med exemplet ListBox ):

  1. Under innehållsgenereringen ItemsPanel initierar en begäran om ItemContainerGenerator att skapa en container för varje dataobjekt. För ListBoxär containern en ListBoxItem. Generatorn anropar tillbaka till ItemsControl för att förbereda containern.

  2. En del av förberedelsen omfattar kopiering av ItemTemplate den som ListBox ska vara ContentTemplate av ListBoxItem.

  3. På samma sätt som alla ContentControl typer ControlTemplate innehåller en av dem ListBoxItem en ContentPresenter. När mallen tillämpas skapar den en ContentPresenter vars ContentTemplate är bunden till ContentTemplateListBoxItem.

  4. Slutligen ContentPresenter gäller det ContentTemplate för sig självt och som skapar användargränssnittet.

Om du har fler än en DataTemplate definierad och vill ange logik för att programmatiskt välja och tillämpa en DataTemplateanvänder du ItemTemplateSelector egenskapen .

Ger ItemsControl stor flexibilitet för visuell anpassning och ger många formaterings- och mallegenskaper. ItemContainerStyle Använd egenskapen eller ItemContainerStyleSelector egenskapen för att ange ett format som påverkar utseendet på de element som innehåller dataobjekten. För är ListBox till exempel ListBoxItemde genererade containrarna kontroller. För ComboBox, är ComboBoxItem de kontroller. Använd egenskapen för att påverka layouten för objekten ItemsPanel . Om du använder gruppering på din kontroll kan du använda GroupStyle egenskapen eller GroupStyleSelector .

Mer information finns i Översikt över dataöverläggning.

XAML-attributanvändning

<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>

XAML-värden

ResourceExtension Något av följande: StaticResource Markup Extension eller DynamicResource Markup Extension. Såvida inte själva formatmallarna innehåller referenser till potentiella körningsreferenser, till exempel systemresurser eller användarinställningar, rekommenderar vi vanligtvis staticResource Markup Extension-referens till ett format för prestanda.

TemplateResourceKeyx:Key Directive-strängvärde som refererar till mallen som begärs som en resurs.

Information om beroendeegenskap

Objekt Value
Identifierarfält ItemTemplateProperty
Metadataegenskaper inställda på true Ingen

Gäller för

Se även