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(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
- Héritage
- Attributs
- Implémente
Exemples
L’exemple suivant utilise un DataTemplate pour afficher les éléments d’un Contrôle ListView. Dans cet exemple, listView 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>
<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"));
}
}
Remarques
Un DataTemplate
objet 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)
-
HeaderTemplate
etFooterTemplate
propriétés de différentes classes de contrôle d’éléments - ItemsPresenter.HeaderTemplate et ItemsPresenter.FooterTemplate
-
HeaderTemplate
etFooterTemplate
les propriétés des contrôles de texte tels que RichEditBox, TextBox -
HeaderTemplate
propriété de contrôles tels que ComboBox, DatePicker, Hub, HubSection, Pivot, Slider, TimePicker, ToggleSwitch ; certains d’entre eux ont égalementFooterTemplate
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 Contrôle ListView soit lié à une collection d’objets Customer
et que la propriété ItemTemplate soit définie sur un DataTemplate. Lors de la création de ListView , un objet ListViewItem est créé pour chaque Customer
élément de la collection, et le DataContext de l’objet ListViewItem est défini sur le client approprié. En d’autres termes, le DataContext du premier ListViewItem est défini sur le premier client, le DataContext du deuxième ListViewItem 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.
|
Constructeurs
DataTemplate() |
Initialise une nouvelle instance de la classe DataTemplate. |
Propriétés
Dispatcher |
Retourne |
DispatcherQueue |
Obtient le |
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) |