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 bindProp=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, <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 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 BindingBase de la Binding 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 autresvaluebindProp=paires où la Binding propriété est spécifiée par son nom. Par exemple : {Binding PathString}PathString est une chaîne évaluée comme étant la valeur de l’extension Binding de balisage créée par l’utilisation de Binding.Path 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 Binding qui peuvent être définies par le biais de BindingBase 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 chacunevaluebindProp=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 ou false. Par défaut, il s’agit de false.

  • 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 ou false. Par défaut, il s’agit de false.

  • Mode: valeur est un nom constant de l’énumération BindingMode . Par exemple : {Binding Mode=OneWay}.

  • NotifyOnSourceUpdated: booléen, peut être soit true ou false. Par défaut, il s’agit de false.

  • NotifyOnTargetUpdated: booléen, peut être soit true ou false. Par défaut, il s’agit de false.

  • NotifyOnValidationError: booléen, peut être soit true ou false. Par défaut, il s’agit de false.

  • 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 UpdateSourceTrigger.

  • ValidatesOnDataErrors: booléen, peut être soit true ou false. Par défaut, il s’agit de false. Consultez la section Notes.

  • ValidatesOnExceptions: booléen, peut être soit true ou false. Par défaut, il s’agit de false. 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.

  • XmlNamespaceManager

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