Partager via


Extension de balisage TemplateBinding

Cette extension lie la valeur d'une propriété dans un modèle de contrôle afin de la définir comme valeur d'une autre propriété exposée dans le contrôle basé sur un modèle.

Utilisation des attributs XAML

<object property="{TemplateBinding sourceProperty}" ... />

Utilisation des attributs XAML (pour la propriété Setter dans le modèle ou le style)

<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />  

Valeurs XAML

Valeur Description
propertyName DependencyProperty.Name de la propriété définie dans la syntaxe de méthode setter.
sourceProperty Autre propriété de dépendance qui existe sur le type basé sur un modèle, spécifiée par DependencyProperty.Name.

- ou -

Nom de propriété « dotted-down » défini par un autre type que le type de cible basé sur un modèle. Il s'agit en réalité d'un PropertyPath. Consultez syntaxe XAML de PropertyPath.

Remarques

Un TemplateBinding est une forme optimisée d’un Binding pour les scénarios de modèle, analogue à un Binding construit avec {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}. Une TemplateBinding est toujours une liaison unidirectionnelle, même si les propriétés impliquent par défaut une liaison bidirectionnelle. Les deux propriétés impliquées doivent être des propriétés de dépendance. Pour obtenir une liaison bidirectionnelle à un parent modèle, utilisez l’instruction de liaison suivante à la place {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}.

RelativeSource est une autre extension de balisage qui est parfois utilisée conjointement avec ou au lieu de TemplateBinding afin d’effectuer une liaison de propriété relative dans un modèle.

La description des modèles de contrôle comme concept n’est pas abordée ici ; Pour plus d’informations, consultez Styles et modèles de contrôle.

La syntaxe d’attribut est la syntaxe la plus courante utilisée avec cette extension de balisage. Le jeton de chaîne fourni après la chaîne d'identificateur TemplateBinding est assigné comme valeur Property de la classe d'extension TemplateBindingExtension sous-jacente.

La syntaxe de l’élément objet est possible, mais elle n’est pas affichée, car elle n’a pas d’application réaliste. TemplateBinding est utilisé pour remplir des valeurs dans des méthodes setter, à l'aide d'expressions évaluées. En outre, l'utilisation de la syntaxe d'élément objet de TemplateBinding pour remplir la syntaxe des éléments de propriété <Setter.Property> est inutilement détaillée.

TemplateBinding peut également être utilisé dans une utilisation d'attributs en clair qui spécifie la propriété Property en tant que paire propriété=valeur :

<object property="{TemplateBinding Property=sourceProperty}" ... />

L'utilisation en clair est souvent utile pour les extensions qui comportent plusieurs propriétés définissables ou si certaines propriétés sont facultatives. TemplateBinding ne comportant qu'une seule propriété définissable (obligatoire), cette utilisation en clair n'est pas classique.

Dans l’implémentation du processeur XAML WPF, la gestion de cette extension de balisage est définie par la classe TemplateBindingExtension.

TemplateBinding est une extension de balisage. Les extensions de balisage sont généralement implémentées lorsqu'il est nécessaire d'empêcher que les valeurs d'attributs ne soient uniquement des valeurs littérales ou des noms de gestionnaires, et lorsque cette exigence est plus générale que de simplement installer des convertisseurs de type sur certains types ou propriétés. Toutes les extensions de balisage en XAML utilisent les caractères { et } dans leur syntaxe d’attribut, c’est-à-dire la convention selon laquelle un processeur XAML reconnaît qu’une extension de balisage doit traiter l’attribut. Pour plus d’informations, consultez les extensions de balisage et le XAML WPF.

Voir aussi