Binding, extension de balisage

Diffère une valeur de propriété comme une valeur liée aux données, en créant un objet d’expression intermédiaire et en 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]*}" .../>  

Remarques sur la syntaxe

Dans ces syntaxes, [] et ne * sont pas des littéraux. Elles font partie d’une notation pour indiquer qu’aucune ou plusieurs = paires de valeurs bindProp peuvent être utilisées, avec un , séparateur entre elles et les paires de = valeurs bindProp précédentes.

Toutes les propriétés listées dans la section « Propriétés de liaison qui peuvent être définies avec l’extension de liaison » peuvent être définies à la place à l’aide des attributs d’un Binding élément objet. Toutefois, il ne s’agit pas véritablement de l’utilisation de l’extension de balisage de Binding , il s’agit simplement du traitement XAML général des attributs qui définissent les propriétés de la Binding classe CLR. En d’autres termes, <Binding bindProp1 =" value1 "[ bindPropN =" ValueN "]*/> est une syntaxe équivalente pour les attributs d' Binding utilisation d’élément 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é appropriée de Binding dans la bibliothèque de classes .NET Framework.

Valeurs XAML

bindProp1, bindPropN Nom de la Binding propriété ou BindingBase à définir. Toutes les Binding Propriétés ne peuvent pas être définies avec l' Binding extension, et certaines propriétés peuvent ê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 à attribuer à la propriété. La gestion de la valeur d’attribut est en définitive spécifique au type et à la logique de la Binding propriété spécifique qui est définie.
path Chaîne de chemin d’accès qui définit la propriété implicite Binding.Path . Voir aussi syntaxe XAML PropertyPath.

{Binding} non qualifié

L' {Binding} utilisation indiquée dans « Binding expression usage » crée un Binding objet avec les valeurs par défaut, qui comprend un initial Binding.Path de null . Cela est toujours utile dans de nombreux scénarios, car le créé Binding 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 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 d’accès implicite

L' Binding extension de balisage utilise Binding.Path comme « propriété par défaut » conceptuelle, où Path= ne doit pas apparaître dans l’expression. Si vous spécifiez une Binding expression avec un chemin d’accès implicite, le chemin d’accès implicite doit apparaître en premier dans l’expression, avant toute autre bindProp = value paire où la Binding propriété est spécifiée par nom. Par exemple : {Binding PathString} , où PathString est une chaîne qui est é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 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 présentée dans cette rubrique utilise la bindProp = value approximation générique, car il existe de nombreuses propriétés de lecture/écriture de BindingBase ou Binding qui peuvent être définies par le biais de la Binding syntaxe d’extension de balisage/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 explicitement Path= , auquel cas elle peut être définie dans n’importe quel ordre). En fait, vous pouvez définir zéro, une ou plusieurs des propriétés dans la liste ci-dessous, en utilisant des bindProp = value paires séparées par des virgules.

Plusieurs de ces valeurs de propriété requièrent des types d’objet 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 plus d’utilisation d’extension de balisage est fondamentalement identique à la valeur que vous spécifiez dans une Binding expression, à l’exception près que vous ne placez pas de guillemets autour bindProp = value de chaque dans l' Binding expression.

  • BindingGroupName: chaîne qui identifie un groupe de liaisons possible. Il s’agit d’un concept de liaison relativement avancé. consultez la page de référence de BindingGroupName .

  • BindsDirectlyToSource: Booléen, peut avoir la valeur 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, requiert une référence d’objet pour la valeur, telle qu’une extension de balisage StaticResource. La valeur dans ce cas est une instance d’une classe de convertisseur personnalisée.

  • ConverterCulture: définissable dans l’expression comme 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 il dépend du type du paramètre passé. En cas de passage d’un type référence pour la valeur, cette utilisation requiert une référence d’objet telle qu’une extension de balisage StaticResourceimbriquée.

  • ElementName: mutuellement exclusif par rapport à RelativeSource et Source ; chacune de ces propriétés de liaison représente une méthodologie de liaison particulière. Consultez vue d’ensemblede la liaison de données.

  • FallbackValue: peut être défini en tant que bindProp = value chaîne dans l’expression, mais il dépend du type de la valeur passée. En cas de passage d’un type référence, requiert une référence d’objet telle qu’une extension de balisage StaticResourceimbriquée.

  • IsAsync: Booléen, peut avoir la valeur true ou false . Par défaut, il s’agit de false.

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

  • NotifyOnSourceUpdated: Booléen, peut avoir la valeur true ou false . Par défaut, il s’agit de false.

  • NotifyOnTargetUpdated: Booléen, peut avoir la valeur true ou false . Par défaut, il s’agit de false.

  • NotifyOnValidationError: Booléen, peut avoir la valeur true ou false . Par défaut, il s’agit de false.

  • Path: chaîne qui décrit un chemin d’accès dans 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 peuvent pas être décrites de manière appropriée dans cette rubrique. Consultez syntaxe XAML PropertyPath.

  • RelativeSource: mutuellement exclusif 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’ensemblede la liaison de données. Requiert une utilisation de RelativeSource MarkupExtension imbriquée pour spécifier la valeur.

  • Source: mutuellement exclusif par rapport à RelativeSource et ElementName ; chacune de ces propriétés de liaison représente une méthodologie de liaison particulière. Consultez vue d’ensemblede la liaison de données. Requiert une utilisation d’extension imbriquée, en général une extension de balisage StaticResource qui fait référence à une source de données d’objet à partir d’un dictionnaire de ressources de 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é. consultez la page de référence de StringFormat .

  • TargetNullValue: peut être défini en tant que bindProp = value chaîne dans l’expression, mais il dépend du type du paramètre passé. En cas de passage d’un type référence pour la valeur, requiert une référence d’objet telle qu’une extension de balisage StaticResourceimbriquée.

  • UpdateSourceTrigger: la valeur est un nom de constante de l' UpdateSourceTrigger énumération. Par exemple : {Binding UpdateSourceTrigger=LostFocus}. Des contrôles spécifiques peuvent avoir des valeurs par défaut différentes pour cette propriété de liaison. Consultez UpdateSourceTrigger.

  • ValidatesOnDataErrors: Booléen, peut avoir la valeur true ou false . Par défaut, il s’agit de false. Consultez la section Notes.

  • ValidatesOnExceptions: Booléen, peut avoir la valeur 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 dans le XMLDOM d’une source de données XML. Consultez lier à des données XML à l’aide d’un XMLDataProvider et de requêtes XPath.

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

  • 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é comme un élément de propriété dans un Binding élément objet, mais n’a pas de technique d’analyse d’attributs facilement disponible pour une utilisation dans une Binding expression. Consultez la rubrique de référence pour ValidationRules .

  • XmlNamespaceManager

Remarques

Important

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

Notes

MultiBinding et PriorityBinding ne prennent pas en charge une XAML syntaxe d’extension. Au lieu de cela, vous devez utiliser 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 {Binding NotifyOnValidationError=true} ou {Binding NotifyOnValidationError=True} .

Les liaisons qui impliquent la validation des données sont généralement spécifiées par un Binding élément explicite plutôt que comme une {Binding ...} expression, et la définition ValidatesOnDataErrors ou ValidatesOnExceptions dans une expression est rare. Cela est dû au fait que la propriété associée ValidationRules ne peut pas être définie facilement 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 pour qu’elles soient autres que des valeurs littérales ou des noms de gestionnaire, et que la spécification soit plus globale que les convertisseurs de type attribués sur 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 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 en ce que la Binding classe qui implémente les fonctionnalités 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 à XAML. Les autres membres sont conçus pour créer Binding une classe plus polyvalente et autonome qui peut traiter de nombreux scénarios de liaison de données en plus de fonctionner comme une extension de balisage XAML.

Voir aussi