Binding, extension de balisage

Accepte une valeur de propriété comme valeur liée aux données, en créant un objet d'expression et interprétant le contexte de données qui s'applique à l'élément et à ses liaisons au moment de l'exécution.

Utilisation de l'expression Binding

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

Remarques sur la syntaxe

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

Toute propriété répertoriée dans la section « Propriétés Binding pouvant être définies avec l'extension Binding » peut être définie à la place à l'aide des attributs d'un élément objet Binding. Toutefois, il ne s'agit pas de l'utilisation d'extension de marquage réelle de Binding. Il s'agit juste du traitement XAML général des attributs qui définissent les propriétés de la classe Binding du CLR. En d'autres termes, <Binding bindProp1="valeur1"[ bindPropN="valeurN"]*/> est une syntaxe équivalente pour les attributs Binding des éléments objet en remplacement de l'utilisation d'une expression Binding. Pour en savoir plus sur l'utilisation des attributs XAML par les propriétés spécifiques de Binding, consultez la section « Utilisation des attributs XAML » de la propriété correspondante de Binding dans la bibliothèque de classes .NET Framework.

Valeurs XAML

bindProp1, bindPropN

Nom de la propriété Binding ou BindingBase à définir. Toutes les propriétés Binding ne peuvent pas être définies avec l'extension Binding, et certaines propriétés peuvent être définies uniquement dans une expression Binding à l'aide d'extensions de balisage imbriquées supplémentaires. Consultez la section « Propriétés Binding pouvant être définies avec l'extension Binding ».

value1, valueN

Valeur à attribuer à la propriété. La gestion de la valeur d'attribut est en définitive spécifique au type et à la logique de la propriété Binding spécifique en cours de définition.

path

Chaîne de chemin d'accès qui définit la propriété Binding.Path implicite. Voir aussi PropertyPath, syntaxe XAML.

{Binding} non qualifié

L'utilisation de {Binding} présentée dans « Utilisation de l'expression Binding » Utilisation » crée un objet Binding avec les valeurs par défaut, qui inclut un Binding.Path initial de null. Ceci est encore utile dans de nombreux scénarios, étant donné que le Binding créé peut reposer sur des propriétés de liaison de données clés telles que Binding.Path et Binding.Source qui sont définies dans le contexte d'exécution. Pour plus d'informations sur le concept de contexte de données, consultez Liaison de données (WPF).

Chemin d'accès implicite

L'extension de balisage Binding utilise Binding.Path en tant que « propriété par défaut » conceptuelle, où Path= n'a pas besoin d'être affiché dans l'expression. Si vous spécifiez une expression Binding avec un chemin d'accès implicite, le chemin d'accès implicite doit s'afficher en premier dans l'expression, avant tout autre paire bindProp=value 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 d'une extension de balisage. Vous pouvez ajouter un chemin d'accès implicite à d'autres propriétés nommées après le séparateur de virgule, par exemple, {Binding LastName, Mode=TwoWay}.

Propriétés Binding pouvant être définies avec l'extension Binding

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

Plusieurs de ces valeurs de propriétés nécessitent des types d'objet qui ne prennent pas en charge une conversion de type native d'une syntaxe texte en XAML, et requièrent par conséquent la définition d'extensions de balisage en tant que valeur d'attribut. Consultez la section Utilisation des attributs XAML de la bibliothèque de classes .NET Framework pour en savoir plus sur chaque propriété ; la chaîne que vous utilisez pour la syntaxe des attributs XAML avec ou sans utilisation d'une extension de balisage supplémentaire est foncièrement identique à la valeur vous spécifiez dans une expression Binding, à ceci près que vous ne placez pas de guillemets autour de chaque bindProp=value dans l'expression Binding.

Les propriétés suivantes sont des propriétés Binding qui ne peuvent pas être définies à l'aide de l'extension de balisage Binding/forme d'expression {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 collecte générique des objets ValidationRule. Cette syntaxe pourrait être exprimée comme un élément de propriété dans un élément objet Binding. Toutefois, aucune technique d'analyse d'attributs n'est disponible pour l'utilisation dans une expression Binding. Consultez la rubrique de référence pour ValidationRules.

  • XmlNamespaceManager

Notes

Remarque importanteImportant

En termes de priorité des propriétés de dépendance, une expression Binding est équivalente à une valeur définie localement.Si vous définissez une valeur locale pour une propriété qui avait précédemment une expression Binding, Binding est supprimée complètement.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 couverte dans cette rubrique. Consultez Vue d'ensemble de la liaison de données.

RemarqueRemarque

MultiBinding et PriorityBinding ne prennent pas en charge une syntaxe d'extension XAML. Vous pouvez utiliser à la place des éléments de propriété.Consultez les rubriques de référence pour MultiBinding et PriorityBinding.

Les valeurs booléennes pour XAML ne respectent pas la casse. Par exemple, vous pourriez spécifier {Binding NotifyOnValidationError=true} ou {Binding NotifyOnValidationError=True}.

Les liaisons qui impliquent la validation des données sont spécifiées en général par un élément Binding explicite plutôt que comme une expression {Binding ...}, et la définition de ValidatesOnDataErrors ou ValidatesOnExceptions dans une expression est rare. C'est parce que la propriété auxiliaire ValidationRules ne peut pas être définie facilement dans le formulaire d'expression. Pour plus d'informations, consultez Comment : implémenter la validation de la liaison.

Binding est une extension de balisage. En règle générale, les extensions de balisage sont implémentées quand il est nécessaire que les valeurs d'attribut soient autre chose que des valeurs littérales ou des noms de gestionnaire, et que l'exigence est plus globale que le simple fait d'attribuer des convertisseurs de type sur certains types ou propriétés. En XAML, toutes les extensions de balisage utilisent les caractères { et } dans leur syntaxe d'attributs, convention selon laquelle un processeur XAML reconnaît qu'une extension de balisage doit traiter le contenu de la chaîne. Pour plus d'informations, consultez Extensions de balisage et XAML WPF.

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

Voir aussi

Référence

Binding

Concepts

Vue d'ensemble de la liaison de données

Vue d'ensemble du langage XAML (WPF)

Extensions de balisage et XAML WPF