DataTemplate Classe

Définition

Décrit la structure visuelle d'un objet de données. Utilisez la liaison de données pour des éléments spécifiques dans le modèle qui affichent les valeurs de données.

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

Héritage
Object IInspectable DependencyObject FrameworkTemplate DataTemplate
Attributs
Implémente

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)

Exemples

L’exemple suivant utilise un DataTemplate pour afficher les éléments d’un ListBox. Dans cet exemple, listBox est lié à une collection d’objets Customer . DataTemplate contient des contrôles TextBlock qui se lient aux FirstNamepropriétés , LastNameet Address . Pour plus d’informations sur la liaison de données, consultez Liaison de données en détail.

<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

Remarques

Un objet DataTemplate est utilisé comme valeur pour ces propriétés :

Vous utilisez généralement un DataTemplate pour spécifier la représentation visuelle de vos données. Les objets DataTemplate sont particulièrement utiles lorsque vous liez un ItemsControl tel qu’un Objet ListBox à une collection entière. Sans instructions spécifiques, un Objet ListBox affiche la représentation sous forme de chaîne des objets d’une collection. Utilisez un DataTemplate pour définir l’apparence de chacun de vos objets de données. Le contenu de votre DataTemplate devient la structure visuelle de vos objets de données.

Vous utilisez généralement la liaison de données dans un DataTemplate. Par exemple, supposons qu’un ListBox soit lié à une collection d’objets Customer et que la propriété ItemTemplate soit définie sur un DataTemplate. Lors de la création du ListBox , un Objet ListBoxItem est créé pour chaque Customer élément de la collection, et le DataContext de l’objet ListBoxItem est défini sur le client approprié. En d’autres termes, le DataContext du premier ListBoxItem est défini sur le premier client, le DataContext du deuxième ListBoxItem est défini sur le deuxième client, et ainsi de suite. Vous pouvez lier des éléments dans le DataTemplate pour afficher les valeurs de propriété qui proviennent de chacun des Customer objets.

Vous pouvez également utiliser un DataTemplate pour partager des objets UIElement entre plusieurs objets ContentControl . Par exemple, supposons que vous avez besoin de plusieurs boutons sur votre application pour avoir le même graphique. Vous pouvez créer un DataTemplate qui contient le graphique et l’utiliser comme ContentTemplate pour les boutons. Un modèle de données pour ContentTemplate peut également utiliser la liaison de données. Mais dans ce cas, le contexte de données est identique à l’élément où le modèle est appliqué. Il s’agit généralement d’un objet de données et il n’existe aucun concept d’éléments.

Vous pouvez placer un DataTemplate en tant qu’enfant direct d’un élément de propriété ItemTemplate en XAML. Il s’agit d’un modèle inline et vous le ferez si vous n’avez pas besoin d’utiliser ce même modèle de données pour d’autres zones de votre interface utilisateur. Vous pouvez également définir un DataTemplate en tant que ressource, puis référencer la ressource en tant que valeur de la propriété ItemTemplate . Une fois qu’il s’agit d’une ressource, vous pouvez utiliser le même modèle pour plusieurs éléments d’interface utilisateur qui ont besoin d’un modèle de données. Si vous factoriser le modèle de données dans Application.Resources, vous pouvez même partager le même modèle pour différentes pages de votre interface utilisateur.

L’utilisation XAML pour le contenu d’un modèle de données n’est pas exposée en tant que propriété de code settable. Il s’agit d’un comportement spécial intégré au traitement XAML d’un DataTemplate.

Pour les scénarios de liaison de données avancés, vous souhaiterez peut-être que les propriétés des données déterminent quel modèle doit produire leurs représentations d’interface utilisateur. Pour ce scénario, vous pouvez utiliser un DataTemplateSelector et définir des propriétés telles que ItemTemplateSelector pour l’affecter à une vue de données. Un DataTemplateSelector est une classe logique que vous écrivez vous-même, qui a une méthode qui retourne exactement un DataTemplate au moteur de liaison en fonction de votre propre logique interagissant avec vos données. Pour plus d’informations, voir Présentation détaillée de la liaison de données.

Propriétés jointes XAML

DataTemplate est la classe de service hôte pour une propriété jointe XAML.

Pour prendre en charge l’accès du processeur XAML aux propriétés jointes, ainsi que pour exposer des opérations get et set équivalentes au code, chaque propriété jointe XAML possède une paire de méthodes d’accesseur Get et Set. Une autre façon d’obtenir ou de définir la valeur dans le code consiste à utiliser le système de propriétés de dépendance, en appelant GetValue ou SetValue et en passant le champ identificateur comme identificateur de propriété de dépendance.

Propriété jointe Description
ExtensionInstance Obtient ou définit une extension instance qui définit des méthodes d’assistance pour le rendu par phases d’un modèle de données.

Historique des versions

Version de Windows Version du SDK Valeur ajoutée
1809 17763 GetElement
1809 17763 RecycleElement

Constructeurs

DataTemplate()

Initialise une nouvelle instance de la classe DataTemplate.

Propriétés

Dispatcher

Obtient le CoreDispatcher auquel cet objet est associé. CoreDispatcher représente une installation qui peut accéder à DependencyObject sur le thread d’interface utilisateur, même si le code est initié par un thread autre que l’interface utilisateur.

(Hérité de DependencyObject)
ExtensionInstanceProperty

Identifie la propriété jointe XAML ExtensionInstance .

Propriétés attachées

ExtensionInstance

Obtient ou définit une extension instance qui définit des méthodes d’assistance pour le rendu par phases d’un modèle de données.

Méthodes

ClearValue(DependencyProperty)

Efface la valeur locale d’une propriété de dépendance.

(Hérité de DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Retourne toute valeur de base établie pour une propriété de dépendance, qui s’applique dans les cas où une animation n’est pas active.

(Hérité de DependencyObject)
GetElement(ElementFactoryGetArgs)

Crée ou récupère un instance existant de l’objet UIElement déclaré dans le DataTemplate.

GetExtensionInstance(FrameworkElement)

Obtient la valeur de la propriété jointe XAML DataTemplate.ExtensionInstance pour l’élément cible.

GetValue(DependencyProperty)

Retourne la valeur effective actuelle d’une propriété de dépendance à partir d’un objet DependencyObject.

(Hérité de DependencyObject)
LoadContent()

Crée les objets UIElement dans dataTemplate.

ReadLocalValue(DependencyProperty)

Retourne la valeur locale d’une propriété de dépendance, si une valeur locale est définie.

(Hérité de DependencyObject)
RecycleElement(ElementFactoryRecycleArgs)

Recycle un élément UIElement précédemment récupéré à l’aide de GetElement.

RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Inscrit une fonction de notification pour écouter les modifications apportées à un DependencyProperty spécifique sur ce instance DependencyObject.

(Hérité de DependencyObject)
SetExtensionInstance(FrameworkElement, IDataTemplateExtension)

Définit la valeur de la propriété jointe XAML DataTemplate.ExtensionInstance pour un élément cible.

SetValue(DependencyProperty, Object)

Définit la valeur locale d’une propriété de dépendance sur un DependencyObject.

(Hérité de DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Annule une notification de modification précédemment inscrite en appelant RegisterPropertyChangedCallback.

(Hérité de DependencyObject)

S’applique à

Voir aussi