DataTemplate Klasse

Definition

Beschreibt die visuelle Struktur eines Datenobjekts. Verwenden Sie die Datenbindung für bestimmte Elemente in der Vorlage, die die Datenwerte anzeigen.

/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DataTemplate : FrameworkTemplate, IElementFactory
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class DataTemplate : FrameworkTemplate, IElementFactory
Public Class DataTemplate
Inherits FrameworkTemplate
Implements IElementFactory
Vererbung
Object IInspectable DependencyObject FrameworkTemplate DataTemplate
Attribute
Implementiert

Beispiele

Im folgenden Beispiel wird eine DataTemplate verwendet, um die Elemente eines ListView-Steuerelements anzuzeigen. In diesem Beispiel ist listView an eine Auflistung von Customer Objekten gebunden. DataTemplate enthält TextBlock-Steuerelemente, die an die FirstNameEigenschaften und LastNameAddress Eigenschaften gebunden sind. Weitere Informationen zur Datenbindung finden Sie im Detail unter "Datenbindung".

<Grid>
    <Grid.Resources>
        <local:Customers x:Key="customers"/>
    </Grid.Resources>

    <ListView ItemsSource="{StaticResource customers}" 
       Width="350" Margin="0,4,0,8">
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="local:Customer">
                <StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{x:Bind LastName}"/>
                        <TextBlock Text="," Margin="0,0,2,0"/>
                        <TextBlock Text="{x:Bind FirstName}"/>
                    </StackPanel>
                    <TextBlock Text="{x:Bind Address}" Margin="8,0,0,2"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>
public class Customer
{
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public String Address { get; set; }

    public Customer(String firstName, String lastName, String address)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
        this.Address = address;
    }

}

public class Customers : ObservableCollection<Customer>
{
    public Customers()
    {
        Add(new Customer("Michael", "Anderberg",
                "12 North Third Street, Apartment 45"));
        Add(new Customer("Chris", "Ashton",
                "34 West Fifth Street, Apartment 67"));
        Add(new Customer("Seo-yun", "Jun",
                "56 East Seventh Street, Apartment 89"));
        Add(new Customer("Guido", "Pica",
                "78 South Ninth Street, Apartment 10"));
    }

}

Hinweise

Ein DataTemplate Objekt wird als Wert für diese Eigenschaften verwendet:

In der Regel verwenden Sie eine DataTemplate, um die visuelle Darstellung Ihrer Daten anzugeben. DataTemplate-Objekte sind besonders hilfreich, wenn Sie ein ItemsControl-Objekt wie ein ListBox-Objekt an eine gesamte Auflistung binden. Ohne bestimmte Anweisungen zeigt ein ListBox die Zeichenfolgendarstellung der Objekte in einer Auflistung an. Verwenden Sie eine DataTemplate, um die Darstellung der einzelnen Datenobjekte zu definieren. Der Inhalt Ihrer DataTemplate wird zur visuellen Struktur Ihrer Datenobjekte.

In der Regel verwenden Sie die Datenbindung in einer DataTemplate. Angenommen, eine ListView ist an eine Auflistung von Customer Objekten gebunden und hat die ItemTemplate-Eigenschaft auf eine DataTemplate festgelegt. Wenn das ListView-Objekt erstellt wird, wird ein ListViewItem-Objekt für jede Customer in der Sammlung erstellt, und der DataContext des ListViewItem-Objekts wird auf den entsprechenden Kunden festgelegt. Anders ausgedrückt: Der DataContext des ersten ListViewItem-Objekts wird auf den ersten Kunden festgelegt, der DataContext des zweiten ListViewItem-Objekts wird auf den zweiten Kunden festgelegt usw. Sie können Elemente in der DataTemplate binden, um Eigenschaftswerte anzuzeigen, die aus den einzelnen Customer Objekten stammen.

Sie können auch eine DataTemplate verwenden, um UIElement-Objekte über mehrere ContentControl-Objekte hinweg zu teilen. Angenommen, Sie benötigen mehrere Schaltflächen in Ihrer Anwendung, um dieselbe Grafik zu haben. Sie können eine DataTemplate erstellen, die die Grafik enthält, und sie als ContentTemplate für die Schaltflächen verwenden. Eine Datenvorlage für ContentTemplate kann auch datenbindung verwenden. In diesem Fall entspricht der Datenkontext jedoch dem Element, auf das die Vorlage angewendet wird. In der Regel handelt es sich um ein Datenobjekt, und es gibt kein Konzept von Elementen.

Sie können eine DataTemplate als direktes untergeordnetes Element eines ItemTemplate-Eigenschaftselements in XAML platzieren. Dies ist als Inlinevorlage bekannt, und Sie würden dies tun, wenn Sie nicht dieselbe Datenvorlage für andere Bereiche der Benutzeroberfläche verwenden müssen. Sie können eine DataTemplate auch als Ressource definieren und dann als Wert der ItemTemplate-Eigenschaft auf die Ressource verweisen. Sobald es sich um eine Ressource handeln soll, können Sie dieselbe Vorlage für mehrere UI-Elemente verwenden, die eine Datenvorlage benötigen. Wenn Sie die Datenvorlage in Application.Resources einteilen, können Sie sogar dieselbe Vorlage für verschiedene Seiten der Benutzeroberfläche freigeben.

Die XAML-Verwendung für Inhalte einer Datenvorlage wird nicht als settable-Codeeigenschaft verfügbar gemacht. Es ist ein spezielles Verhalten, das in die XAML-Verarbeitung für eine DataTemplate integriert ist.

Für erweiterte Datenbindungsszenarien sollten Sie über Eigenschaften der Daten verfügen, die bestimmen, welche Vorlage ihre UI-Darstellungen erzeugen soll. In diesem Szenario können Sie einen DataTemplateSelector verwenden und Eigenschaften wie ItemTemplateSelector festlegen, um sie einer Datenansicht zuzuweisen. Ein DataTemplateSelector ist eine Logikklasse, die Sie selbst schreiben, die eine Methode enthält, die genau eine DataTemplate auf der Grundlage Ihrer eigenen Logik, die mit Ihren Daten interagiert, an das Bindungsmodul zurückgibt. Weitere Informationen finden Sie unter Datenbindung im Detail.

Angefügte XAML-Eigenschaften

DataTemplate ist die Hostdienstklasse für eine angefügte XAML-Eigenschaft.

Um den XAML-Prozessorzugriff auf die angefügten Eigenschaften zu unterstützen und auch entsprechende Get - und Set-Vorgänge für Code verfügbar zu machen, verfügt jede angefügte XAML-Eigenschaft über ein Paar Get- und Set-Accessormethoden. Eine weitere Möglichkeit zum Abrufen oder Festlegen des Werts im Code besteht darin, das Abhängigkeitseigenschaftssystem zu verwenden, indem entweder GetValue oder SetValue aufgerufen und das Bezeichnerfeld als Abhängigkeitseigenschaftsbezeichner übergeben wird.

Angefügte Eigenschaft Beschreibung
ExtensionInstance Dient zum Abrufen oder Festlegen einer Erweiterungsinstanz, die Hilfsmethoden für das phasenweise Rendern einer Datenvorlage definiert.

Konstruktoren

Name Beschreibung
DataTemplate()

Initialisiert eine neue Instanz der DataTemplate-Klasse .

Eigenschaften

Name Beschreibung
Dispatcher

Gibt immer in einer Windows App SDK-App zurück null . Verwenden Sie stattdessen DispatcherQueue .

(Geerbt von DependencyObject)
DispatcherQueue

Ruft ab DispatcherQueue , dem dieses Objekt zugeordnet ist. Dies DispatcherQueue stellt eine Einrichtung dar, die auf den DependencyObject UI-Thread zugreifen kann, auch wenn der Code von einem Nicht-UI-Thread initiiert wird.

(Geerbt von DependencyObject)
ExtensionInstanceProperty

Identifies the ExtensionInstance XAML attached property.

Angefügte Eigenschaften

Name Beschreibung
ExtensionInstance

Dient zum Abrufen oder Festlegen einer Erweiterungsinstanz, die Hilfsmethoden für das phasenweise Rendern einer Datenvorlage definiert.

Methoden

Name Beschreibung
ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Abhängigkeitseigenschaft.

(Geerbt von DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Gibt einen Basiswert zurück, der für eine Abhängigkeitseigenschaft eingerichtet wurde, was in Fällen angewendet wird, in denen eine Animation nicht aktiv ist.

(Geerbt von DependencyObject)
GetElement(ElementFactoryGetArgs)

Erstellt oder ruft eine vorhandene Instanz des UIElement - Objekts, das in der DataTemplate deklariert ist.

GetExtensionInstance(FrameworkElement)

Ruft den Wert der angefügten DataTemplate.ExtensionInstance-XAML-Eigenschaft für das Zielelement ab.

GetValue(DependencyProperty)

Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft aus einem DependencyObject zurück.

(Geerbt von DependencyObject)
LoadContent()

Erstellt die UIElement-Objekte in der DataTemplate.

ReadLocalValue(DependencyProperty)

Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, wenn ein lokaler Wert festgelegt wird.

(Geerbt von DependencyObject)
RecycleElement(ElementFactoryRecycleArgs)

Recycelt ein UIElement , das zuvor mithilfe von GetElement abgerufen wurde.

RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registriert eine Benachrichtigungsfunktion, um Änderungen an einer bestimmten DependencyProperty für diese DependencyObject-Instanz zu überwachen.

(Geerbt von DependencyObject)
SetExtensionInstance(FrameworkElement, IDataTemplateExtension)

Legt den Wert der angefügten Xaml-Eigenschaft "DataTemplate.ExtensionInstance " für ein Zielelement fest.

SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft für ein DependencyObject fest.

(Geerbt von DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Bricht eine Änderungsbenachrichtigung ab, die zuvor durch Aufrufen von RegisterPropertyChangedCallback registriert wurde.

(Geerbt von DependencyObject)

Gilt für:

Weitere Informationen