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(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DataTemplate : FrameworkTemplate
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 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(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class DataTemplate : FrameworkTemplate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 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
Public Class DataTemplate
Inherits FrameworkTemplate
Implements IElementFactory
<DataTemplate ...>
  templateContent
</DataTemplate>
 

Vererbung
Object IInspectable DependencyObject FrameworkTemplate DataTemplate
Attribute
Implementiert

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Beispiele

Im folgenden Beispiel wird eine DataTemplate verwendet, um die Elemente eines ListBox-Objekts anzuzeigen. In diesem Beispiel ist das ListBox 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>
        <src:Customers x:Key="customers"/>
    </Grid.Resources>

    <ListBox ItemsSource="{StaticResource customers}" Width="350" Margin="0,5,0,10">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Padding="5,0,5,0"
          Text="{Binding FirstName}" />
                    <TextBlock Text="{Binding LastName}" />
                    <TextBlock Text=", " />
                    <TextBlock Text="{Binding Address}" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</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"));
    }

}
Public Class Customer
    Private _firstName As String
    Private _lastName As String
    Private _address As String

    Public Property FirstName() As String
        Get
            Return _firstName
        End Get

        Set(ByVal value As String)
            _firstName = value
        End Set
    End Property

    Public Property LastName() As String
        Get
            Return _lastName
        End Get

        Set(ByVal value As String)
            _lastName = value
        End Set
    End Property

    Public Property Address() As String
        Get
            Return _address
        End Get

        Set(ByVal value As String)
            _address = value
        End Set
    End Property

    Public Sub New(ByVal firstName As String, ByVal lastName As String, ByVal address As String)
        Me.FirstName = firstName
        Me.LastName = lastName
        Me.Address = address
    End Sub

End Class

Public Class Customers
    Inherits ObservableCollection(Of Customer)

    Public Sub New()
        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"))
    End Sub

End Class

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, ein ListBox ist an eine Auflistung von Customer -Objekten gebunden und die ItemTemplate-Eigenschaft auf eine DataTemplate festgelegt. Wenn das ListBox-Element erstellt wird, wird für jede Customer in der Auflistung ein ListBoxItem-Element erstellt, und der DataContext des ListBoxItem-Objekts wird auf den entsprechenden Kunden festgelegt. Anders ausgedrückt: Der DataContext des ersten ListBoxItem ist auf den ersten Kunden, der DataContext des zweiten ListBoxItem 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.

Versionsverlauf

Windows-Version SDK-Version Wertschöpfung
1809 17763 GetElement
1809 17763 RecycleElement

Konstruktoren

DataTemplate()

Initialisiert eine neue instance der DataTemplate-Klasse.

Eigenschaften

Dispatcher

Ruft den CoreDispatcher ab, dem dieses Objekt zugeordnet ist. CoreDispatcher stellt eine Funktion dar, die auf das 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