Binding, 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 []
littéraux et *
ne sont pas des littéraux. Ils font partie d’une notation pour indiquer que zéro ou plusieurs paires de valeurs=
peuvent être utilisées, avec un ,
séparateur entre eux et des paires de valeurs bindProp=
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, <Binding
bindProp1Binding
Pour en savoir plus sur l’utilisation de l’attribut XAML de propriétés spécifiques, Bindingconsultez la section « Utilisation des attributs XAML » de la propriété appropriée de Binding la bibliothèque de classes .NET Framework.
Valeurs XAML
Valeur | Description |
---|---|
bindProp1, bindPropN |
Nom de la ou Binding de la BindingBase propriété à définir. Toutes les Binding propriétés ne peuvent pas être définies avec l’extension Binding et certaines propriétés ne peuvent pas être définies dans une Binding expression uniquement à 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 |
Valeur à définir pour 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 Binding objet avec des valeurs par défaut, qui inclut un initial 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 Binding
balisage s’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 autresbindProp
=value
paires où la Binding propriété est spécifiée par son nom. Par exemple : {Binding PathString}
où PathString
est une chaîne évaluée comme étant la valeur de l’extension Binding.Path de balisage créée par l’utilisation de Binding 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ériquebindProp
=value
, car il existe de nombreuses propriétés de lecture/écriture ou BindingBase qui peuvent être définies par le biais de Binding l’extension Binding
de balisage/syntaxe d’expression. 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
=value
dans l’expression.Binding
BindingGroupName: chaîne qui identifie un groupe de liaisons possible. Il s’agit d’un concept de liaison relativement avancé ; voir la page de référence pour BindingGroupName.
BindsDirectlyToSource: booléen, peut être soit
true
oufalse
. Par défaut, il s’agit defalse
.Converter: peut être défini en tant que
bindProp
=value
chaîne dans l’expression, mais pour ce faire, nécessite une référence d’objet pour la valeur, telle qu’une extension staticResource Markup. La valeur dans ce cas est une instance d’une classe de convertisseur personnalisée.ConverterCulture: settable dans l’expression en tant qu’identificateur basé sur des normes ; consultez la rubrique de référence pour ConverterCulture.
ConverterParameter: peut être défini en tant que
bindProp
=value
chaîne dans l’expression, mais cela dépend du type du paramètre passé. Si vous passez un type de référence pour la valeur, cette utilisation nécessite une référence d’objet telle qu’une extension de balisage StaticResource imbriquée.ElementName: s’excluent mutuellement et RelativeSourceSource; chacune de ces propriétés de liaison représente une méthodologie de liaison particulière. Consultez Vue d’ensemble de la liaison de données.
FallbackValue: peut être défini en tant que
bindProp
=value
chaîne dans l’expression, mais cela dépend du type de la valeur passée. Si vous passez un type de référence, nécessite une référence d’objet telle qu’une extension de balisage StaticResource imbriquée.IsAsync: booléen, peut être soit
true
oufalse
. Par défaut, il s’agit defalse
.Mode: valeur est un nom constant de l’énumération BindingMode . Par exemple :
{Binding Mode=OneWay}
.NotifyOnSourceUpdated: booléen, peut être soit
true
oufalse
. Par défaut, il s’agit defalse
.NotifyOnTargetUpdated: booléen, peut être soit
true
oufalse
. Par défaut, il s’agit defalse
.NotifyOnValidationError: booléen, peut être soit
true
oufalse
. Par défaut, il s’agit defalse
.Path: chaîne qui décrit un chemin d’accès à un objet de données ou à un modèle objet général. Le format fournit plusieurs conventions différentes pour parcourir un modèle objet qui ne peut pas être décrit correctement dans cette rubrique. Consultez la syntaxe XAML PropertyPath.
RelativeSource: s’excluent mutuellement par rapport à ElementName et Source; chacune de ces propriétés de liaison représente une méthodologie de liaison particulière. Consultez Vue d’ensemble de la liaison de données. Nécessite une utilisation imbriquée relativeSource MarkupExtension pour spécifier la valeur.
Source: s’excluent mutuellement et RelativeSourceElementName; chacune de ces propriétés de liaison représente une méthodologie de liaison particulière. Consultez Vue d’ensemble de la liaison de données. Nécessite une utilisation d’extension imbriquée, généralement une extension staticResource Markup qui fait référence à une source de données d’objet à partir d’un dictionnaire de ressources clé.
StringFormat: chaîne qui décrit une convention de format de chaîne pour les données liées. Il s’agit d’un concept de liaison relativement avancé ; voir la page de référence pour StringFormat.
TargetNullValue: peut être défini en tant que
bindProp
=value
chaîne dans l’expression, mais cela dépend du type du paramètre passé. Si vous passez un type référence pour la valeur, nécessite une référence d’objet telle qu’une extension de balisage StaticResource imbriquée.UpdateSourceTrigger: valeur est un nom constant de l’énumération UpdateSourceTrigger . Par exemple :
{Binding UpdateSourceTrigger=LostFocus}
. Les contrôles spécifiques ont potentiellement des valeurs par défaut différentes pour cette propriété de liaison. Consultez l’article UpdateSourceTrigger.ValidatesOnDataErrors: booléen, peut être soit
true
oufalse
. Par défaut, il s’agit defalse
. Consultez la section Notes.ValidatesOnExceptions: booléen, peut être soit
true
oufalse
. Par défaut, il s’agit defalse
. Consultez la section Notes.XPath: chaîne qui décrit un chemin d’accès au XMLDOM d’une source de données XML. Consultez Lier des données XML à l’aide d’une requête XMLDataProvider et XPath.
Les propriétés Binding suivantes ne peuvent pas être définies à l’aide du formulaire d’extension/Binding
expression de {Binding}
balisage.
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’objets ValidationRule . 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.
Notes
Important
En termes de précédence de propriété de dépendance, une Binding
expression équivaut à une valeur définie localement. Si vous définissez une valeur locale pour une propriété qui avait précédemment une Binding
expression, elle 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 utilisez plutôt 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 pouvez spécifier l’une ou l’autre {Binding NotifyOnValidationError=true}
.{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’attributs à d’autres que les valeurs littérales ou les noms de gestionnaires, et que l’exigence est plus globale que les convertisseurs de types attribués sur certains types ou propriétés. Toutes les extensions de balisage en XAML utilisent les caractères et {
les }
caractères de leur syntaxe d’attribut, c’est-à-dire 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 Extensions de balisage et 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
.NET Desktop feedback