Freigeben über


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 einer ListView anzuzeigen. In diesem Beispiel ist die ListView an eine Auflistung von Customer -Objekten gebunden. DataTemplate enthält TextBlock-Steuerelemente , die an die FirstNameEigenschaften , LastNameund Address gebunden sind. Weitere Informationen zur Datenbindung finden Sie 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:

Sie verwenden in der Regel eine DataTemplate, um die visuelle Darstellung Ihrer Daten anzugeben. DataTemplate-Objekte sind besonders nützlich, wenn Sie ein ItemsControl-Element wie ein ListBox-Objekt an eine gesamte Auflistung binden. Ohne spezifische 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 die ItemTemplate-Eigenschaft auf eine DataTemplate festgelegt. Wenn die ListView erstellt wird, wird ein ListViewItem-Element für jede Customer in der Auflistung erstellt, und der DataContext des ListViewItem-Objekts wird auf den entsprechenden Kunden festgelegt. Anders ausgedrückt: Der DataContext des ersten ListViewItem ist auf den ersten Kunden, der DataContext des zweiten ListViewItem auf den zweiten Kunden festgelegt usw. Sie können Elemente in der DataTemplate binden, um Eigenschaftswerte anzuzeigen, die Customer aus den einzelnen 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 Die Datenbindung verwenden. In diesem Fall ist der Datenkontext jedoch mit dem Element identisch, in dem die Vorlage angewendet wird. In der Regel handelt es sich hierbei 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 diese Datenvorlage nicht für andere Bereiche Ihrer Benutzeroberfläche verwenden müssen. Sie können eine DataTemplate auch als Ressource definieren und dann auf die Ressource als Wert der ItemTemplate-Eigenschaft verweisen. Sobald es sich um eine Ressource handelt, 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 dieselbe Vorlage sogar für verschiedene Seiten Ihrer Benutzeroberfläche freigeben.

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

Bei erweiterten Datenbindungsszenarien sollten Sie die Eigenschaften der Daten festlegen lassen, welche Vorlage ihre Ui-Darstellungen erstellen 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 über eine Methode verfügt, die basierend auf Ihrer eigenen Logik, die mit Ihren Daten interagiert, genau eine DataTemplate an die Bindungs-Engine zurückgibt. Weitere Informationen finden Sie unter Datenbindung im Detail.

XAML angefügte 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 äquivalente Get - und Set-Vorgänge für Code verfügbar zu machen, verfügt jede angefügte XAML-Eigenschaft über ein Paar von Get- und Set-Accessormethoden. Eine andere Möglichkeit zum Abrufen oder Festlegen des Werts im Code besteht darin, das Abhängigkeitseigenschaftssystem zu verwenden, entweder GetValue oder SetValue aufzurufen und das Bezeichnerfeld als Abhängigkeitseigenschaftsbezeichner zu übergeben.

Angefügte Eigenschaft Beschreibung
ExtensionInstance Ruft eine Erweiterung instance ab, die Hilfsmethoden für das phasenweise Rendering einer Datenvorlage definiert, oder legt diese fest.

Konstruktoren

DataTemplate()

Initialisiert eine neue instance der DataTemplate-Klasse.

Eigenschaften

Dispatcher

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

(Geerbt von DependencyObject)
DispatcherQueue

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

(Geerbt von DependencyObject)
ExtensionInstanceProperty

Gibt die angefügte ExtensionInstance-XAML-Eigenschaft an.

Angefügte Eigenschaften

ExtensionInstance

Ruft eine Erweiterung instance ab, die Hilfsmethoden für das phasenweise Rendering einer Datenvorlage definiert, oder legt diese fest.

Methoden

ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Abhängigkeitseigenschaft.

(Geerbt von DependencyObject)
GetAnimationBaseValue(DependencyProperty)

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

(Geerbt von DependencyObject)
GetElement(ElementFactoryGetArgs)

Erstellt oder ruft eine vorhandene instance des in dataTemplate deklarierten UIElement-Objekts ab.

GetExtensionInstance(FrameworkElement)

Ruft den Wert der angefügten XAML-Eigenschaft DataTemplate.ExtensionInstance 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 dataTemplate.

ReadLocalValue(DependencyProperty)

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

(Geerbt von DependencyObject)
RecycleElement(ElementFactoryRecycleArgs)

Recycelt ein UIElement , das zuvor mit GetElement abgerufen wurde.

RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registriert eine Benachrichtigungsfunktion zum Lauschen auf Änderungen an einer bestimmten DependencyProperty für dieses DependencyObject-instance.

(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 registriert wurde, indem RegisterPropertyChangedCallback aufgerufen wurde.

(Geerbt von DependencyObject)

Gilt für:

Weitere Informationen