Partager via


Liage de l’extension de balisage

Reporte une valeur de propriété pour être une valeur liée aux données, créant un objet d’expression intermédiaire et interprétant le contexte de données qui s’applique à l’élément et à sa liaison au moment de l’exécution.

Utilisation des expressions de liaison

<object property="{Binding}" .../>
-or-
<object property="{Binding  bindProp1=value1[, bindPropN=valueN]*}" ...
/>
-or-
<object property="{Binding path}" .../>
-or
<object property="{Binding path[, bindPropN=valueN]*}" .../>

Notes de syntaxe

Dans ces syntaxes, les [] et * ne sont pas des littéraux. Ils font partie d'une notation pour indiquer que zéro ou plusieurs paires bindProp=value peuvent être utilisées, avec un , séparateur entre elles et les paires bindProp=value précédentes.

Toutes les propriétés répertoriées dans la section « Propriétés de liaison pouvant être définies avec l’extension de liaison » peuvent plutôt être définies à l’aide d’attributs d’un Binding élément objet. Toutefois, ce n’est pas vraiment l’utilisation de l’extension de balisage , Bindingil s’agit simplement du traitement XAML général des attributs qui définissent les propriétés de la classe CLR Binding . En d’autres termes, <BindingbindProp1="value1"[bindPropN valueN=""]*/> est une syntaxe équivalente pour les attributs d’utilisation des Binding éléments d’objet au lieu d’une Binding utilisation d’expression. Pour en savoir plus sur l’utilisation des attributs XAML des propriétés spécifiques de Binding, consultez la section « Utilisation des attributs XAML » de la propriété correspondante dans la bibliothèque de classes .NET Framework de Binding.

Valeurs XAML

Valeur Descriptif
bindProp1, bindPropN Le nom de la propriété Binding ou BindingBase à définir. Les propriétés Binding ne peuvent pas toutes être définies avec l’extension Binding, et certaines ne peuvent être définies dans une expression Binding qu’à l’aide d’extensions de balisage imbriquées supplémentaires. Consultez la section « Propriétés de liaison qui peuvent être définies avec l’extension de liaison ».
value1, valueN La valeur à attribuer à la propriété. La gestion de la valeur d’attribut est finalement spécifique au type et à la logique de la propriété spécifique Binding définie.
path Chaîne de chemin qui définit la propriété implicite Binding.Path . Consultez également La syntaxe XAML PropertyPath.

{Binding} non qualifié

L’utilisation {Binding} indiquée dans « Binding Expression Usage » crée un objet Binding avec des valeurs par défaut, ce qui inclut une valeur initiale Binding.Path de null. Cela est toujours utile dans de nombreux scénarios, car la création Binding peut s’appuyer sur des propriétés de liaison de données clés telles que Binding.Path et Binding.Source définies dans le contexte de données au moment de l’exécution. Pour plus d’informations sur le concept de contexte de données, consultez Liaison de données.

Chemin implicite

L'extension de balisage Binding utilise Binding.Path comme une "propriété par défaut" conceptuelle, où Path= n'a pas besoin d'apparaître dans l'expression. Si vous spécifiez une expression avec un Binding chemin d’accès implicite, le chemin implicite doit apparaître en premier dans l’expression, avant les bindProp=value paires où la propriété Binding est spécifiée par son nom. Par exemple : {Binding PathString}, où PathString est une chaîne évaluée comme étant la valeur de Binding.Path dans le Binding créé par l’utilisation de l’extension de balisage. Vous pouvez ajouter un chemin implicite avec d’autres propriétés nommées après le séparateur de virgules, par exemple {Binding LastName, Mode=TwoWay}.

Propriétés de liaison qui peuvent être définies avec l’extension de liaison

La syntaxe indiquée dans cette rubrique utilise l’approximation générique bindProp=value, car il existe de nombreuses propriétés de lecture/écriture de BindingBase ou Binding qui peuvent être définies par le biais de l’extension / syntaxe d’expression de balisage Binding. Ils peuvent être définis dans n’importe quel ordre, à l’exception d’un implicite Binding.Path. (Vous avez la possibilité de spécifier Path=explicitement , auquel cas il peut être défini dans n’importe quel ordre). En fait, vous pouvez définir zéro ou plusieurs propriétés dans la liste ci-dessous, en utilisant bindProp=value des paires séparées par des virgules.

Plusieurs de ces valeurs de propriété nécessitent des types d’objets qui ne prennent pas en charge une conversion de type native à partir d’une syntaxe de texte en XAML, et nécessitent donc des extensions de balisage pour être définies en tant que valeur d’attribut. Pour plus d’informations, consultez la section Utilisation des attributs XAML dans la bibliothèque de classes .NET Framework pour chaque propriété ; la chaîne que vous utilisez pour la syntaxe d’attribut XAML avec ou sans utilisation supplémentaire de l’extension de balisage est essentiellement identique à la valeur que vous spécifiez dans une Binding expression, à l’exception que vous ne placez pas de guillemets autour de chacunebindProp=valuedans l’expression.Binding

Les propriétés suivantes de Binding ne peuvent pas être définies à l'aide de l'extension de balisage/de la forme d'expression Binding{Binding}.

  • UpdateSourceExceptionFilter: cette propriété attend une référence à une implémentation de rappel. Les rappels/méthodes autres que les gestionnaires d’événements ne peuvent pas être référencés dans la syntaxe XAML.

  • ValidationRules: la propriété prend une collection générique d'ValidationRule objets. Cela peut être exprimé en tant qu’élément de propriété dans un Binding élément objet, mais n’a pas de technique d’analyse d’attributs facilement disponible pour l’utilisation dans une Binding expression. Consultez la rubrique de référence pour ValidationRules.

  • XmlNamespaceManager

Remarques

Important

En termes de précédence de propriété de dépendance, une Binding expression équivaut à une valeur définie localement. Si vous établissez une valeur spécifique pour une propriété qui avait précédemment une expression Binding, l'Binding est complètement supprimée. Pour plus d’informations, consultez Priorité de la valeur de propriété de dépendance.

La description de la liaison de données à un niveau de base n’est pas abordée dans cette rubrique. Consultez Vue d’ensemble de la liaison de données.

Remarque

MultiBinding et PriorityBinding ne prennent pas en charge une syntaxe d’extension XAML. Vous préféreriez utiliser des éléments de propriété. Consultez les rubriques de référence pour MultiBinding et PriorityBinding.

Les valeurs booléennes pour XAML sont insensibles à la casse. Par exemple, vous pouvez spécifier soit {Binding NotifyOnValidationError=true} soit {Binding NotifyOnValidationError=True}.

Les liaisons qui impliquent la validation des données sont généralement spécifiées par un élément explicite Binding plutôt que comme expression {Binding ...} , et le paramètre ValidatesOnDataErrors ou ValidatesOnExceptions dans une expression est rare. Cela est dû au fait que la propriété ValidationRules complémentaire ne peut pas être facilement définie dans le formulaire d’expression. Pour plus d’informations, consultez Implémenter la validation de liaison.

Binding est une extension de balisage. Les extensions de balisage sont généralement implémentées lorsqu'il est nécessaire d'échapper à des valeurs d'attribut en utilisant autre chose que des valeurs littérales ou des noms de gestionnaires, et que cette exigence est plus globale que celle des convertisseurs de type appliqués à certains types ou propriétés. Toutes les extensions de balisage en XAML utilisent les caractères { et } dans leur syntaxe d’attribut, qui est la convention par laquelle un processeur XAML reconnaît qu'une extension de balisage doit traiter le contenu de la chaîne. Pour plus d’informations, consultez les extensions de balisage et le XAML WPF.

Binding est une extension de balisage atypique dans laquelle la Binding classe qui implémente la fonctionnalité d’extension pour l’implémentation XAML de WPF implémente également plusieurs autres méthodes et propriétés qui ne sont pas liées au code XAML. Les autres membres sont destinés à rendre Binding une classe plus polyvalente et autonome qui peut traiter de nombreux scénarios de liaison de données en plus de fonctionner en tant qu’extension de balisage XAML.

Voir aussi