DataTemplate Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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 FirstName
propriétés , LastName
et 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 :
- ItemsControl.ItemTemplate (qui est hérité par divers contrôles d’éléments tels que ListView, GridView, ListBox)
- ContentControl.ContentTemplate (qui est hérité par divers contrôles de contenu tels que Button, Frame, SettingsFlyout)
- Propriétés HeaderTemplate et FooterTemplate de différentes classes de contrôle d’éléments
- ItemsPresenter.HeaderTemplate et ItemsPresenter.FooterTemplate
- Propriétés HeaderTemplate et FooterTemplate des contrôles de texte tels que RichEditBox, TextBox
- Propriété HeaderTemplate de contrôles tels que ComboBox, DatePicker, Hub, HubSection, Pivot, Slider, TimePicker, ToggleSwitch ; certains d’entre eux ont également FooterTemplate
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) |