Bindung als MarkuperweiterungBinding Markup Extension

Verschiebt einen Eigenschaftswert als datengebundenen Wert, erstellt ein Zwischenausdruckobjekt und interpretiert den Datenkontext, der auf das Element und seine Bindung zur Laufzeit angewendet wird.Defers a property value to be a data-bound value, creating an intermediate expression object and interpreting the data context that applies to the element and its binding at run time.

BindungsexpressionverwendungBinding Expression Usage

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

SyntaxhinweiseSyntax Notes

In diesen Syntaxen [] * sind die und sind keine Literale.In these syntaxes, the [] and * are not literals. Sie sind Teil einer Notation, um anzugeben, dass null oder , mehr bindProp-Wertpaare=value verwendet werden können, mit einem Trennzeichen zwischen ihnen und vorangehenden bindProp-Wertpaaren.=valueThey are part of a notation to indicate that zero or more bindProp=value pairs can be used, with a , separator between them and preceding bindProp=value pairs.

Alle Eigenschaften, die im Abschnitt "Binding Properties That Can Be Set with the Binding Binding Extension" aufgeführt sind, können stattdessen mithilfe von Attributen eines Objektelements festgelegt werden.Any of the properties listed in the "Binding Properties That Can Be Set with the Binding Extension" section could instead be set using attributes of a Binding object element. Dies ist jedoch nicht wirklich die BindingVerwendung von Markuperweiterungen von , es ist nur Binding die allgemeine XAML-Verarbeitung von Attributen, die Eigenschaften der CLR-Klasse festlegen.However, that is not truly the markup extension usage of Binding, it is just the general XAML processing of attributes that set properties of the CLR Binding class. Mit anderen <Binding Worten, bindProp1="value1 "[ bindPropN="valueN "]*/> ist Binding eine äquivalente Binding Syntax für Attribute der Objektelementverwendung anstelle einer Ausdrucksverwendung.In other words, <Binding bindProp1="value1"[ bindPropN="valueN"]*/> is an equivalent syntax for attributes of Binding object element usage instead of a Binding expression usage. Weitere Informationen zur Verwendung bestimmter Eigenschaften Bindingvon XAML-Attributen finden Sie im Abschnitt Binding "XAML-Attributverwendung" der entsprechenden Eigenschaft in der .NET Framework-Klassenbibliothek.To learn about the XAML attribute usage of specific properties of Binding, see the "XAML Attribute Usage" section of the relevant property of Binding in the .NET Framework Class Library.

XAML-WerteXAML Values

bindProp1, bindPropN Der Name Binding der BindingBase oder-Eigenschaft, die festgelegt werden soll.The name of the Binding or BindingBase property to set. Nicht Binding alle Eigenschaften können Binding mit der Erweiterung festgelegt werden, Binding und einige Eigenschaften können nur mithilfe weiterer verschachtelter Markuperweiterungen innerhalb eines Ausdrucks festgelegt werden.Not all Binding properties can be set with the Binding extension, and some properties are settable within a Binding expression only by using further nested markup extensions. Siehe Abschnitt "Binding Properties That Can Be Set with the Binding Extension".See "Binding Properties That Can Be Set with the Binding Extension" section.
value1, valueN Der für die Eigenschaft festzulegende Wert.The value to set the property to. Die Behandlung des Attributwerts ist letztlich spezifisch für Binding den Typ und die Logik der bestimmten Eigenschaft, die festgelegt wird.The handling of the attribute value is ultimately specific to the type and logic of the specific Binding property being set.
path Die Pfadzeichenfolge, die Binding.Path die implizite Eigenschaft festlegt.The path string that sets the implicit Binding.Path property. Siehe auch PropertyPath XAML Syntax.See also PropertyPath XAML Syntax.

UnqualifizierteS "Binding"Unqualified {Binding}

Die {Binding} in "Binding Expression Usage" Binding angezeigte Verwendung erstellt ein Binding.Path nullObjekt mit Standardwerten, das eine Initiale von enthält.The {Binding} usage shown in "Binding Expression Usage" creates a Binding object with default values, which includes an initial Binding.Path of null. Dies ist in vielen Szenarien Binding immer noch nützlich, da die Binding.Path erstellten möglicherweise auf Schlüsseldatenbindungseigenschaften basieren, z. B. und Binding.Source die im Laufzeitdatenkontext festgelegt werden.This is still useful in many scenarios, because the created Binding might be relying on key data binding properties such as Binding.Path and Binding.Source being set in the run-time data context. Weitere Informationen zum Konzept des Datenkontexts finden Sie unter Datenbindung.For more information on the concept of data context, see Data Binding.

Impliziter PfadImplicit Path

Die Binding Markuperweiterung Binding.Path verwendet als konzeptionelle Path= "Standardeigenschaft", wobei im Ausdruck nicht angezeigt werden muss.The Binding markup extension uses Binding.Path as a conceptual "default property", where Path= does not need to appear in the expression. Wenn Sie Binding einen Ausdruck mit einem impliziten Pfad angeben, muss der bindProp = value implizite Binding Pfad zuerst im Ausdruck angezeigt werden, vor allen anderen Paaren, bei denen die Eigenschaft durch den Namen angegeben wird.If you specify a Binding expression with an implicit path, the implicit path must appear first in the expression, prior to any other bindProp=value pairs where the Binding property is specified by name. Beispiel: {Binding PathString}, PathString wobei es sich um eine Zeichenfolge Binding.Path handelt, die als Wert der durch die Markuperweiterungsverwendung Binding erstellten Zeichenfolge ausgewertet wird.For example: {Binding PathString}, where PathString is a string that is evaluated to be the value of Binding.Path in the Binding created by the markup extension usage. Sie können einen impliziten Pfad mit anderen benannten Eigenschaften nach {Binding LastName, Mode=TwoWay}dem Kommatrennzeichen anfügen, z. B. .You can append an implicit path with other named properties after the comma separator, for example, {Binding LastName, Mode=TwoWay}.

Bindungseigenschaften, die mit der Bindungserweiterung festgelegt werden könnenBinding Properties That Can Be Set with the Binding Extension

Die in diesem Thema gezeigte Syntax verwendet die generische bindProp = value Annäherung, BindingBase da Binding es viele Lese-/Schreibeigenschaften von oder die durch die Binding Markuperweiterung / Ausdruckssyntax festgelegt werden können.The syntax shown in this topic uses the generic bindProp=value approximation, because there are many read/write properties of BindingBase or Binding that can be set through the Binding markup extension / expression syntax. Sie können in beliebiger Reihenfolge festgelegt werden, mit Ausnahme einer impliziten Binding.Path.They can be set in any order, with the exception of an implicit Binding.Path. (Sie haben die Möglichkeit, Path=explizit anzugeben, in welchem Fall es in beliebiger Reihenfolge festgelegt werden kann).(You do have the option to explicitly specify Path=, in which case it can be set in any order). Grundsätzlich können Sie null oder mehr der Eigenschaften in bindProp = value der Liste unten festlegen, indem Sie Durch Kommas getrennte Paare verwenden.Basically, you can set zero or more of the properties in the list below, using bindProp=value pairs separated by commas.

Mehrere dieser Eigenschaftswerte erfordern Objekttypen, die keine systemeigene Typkonvertierung aus einer Textsyntax in XAML unterstützen und daher Markuperweiterungen erfordern, um als Attributwert festgelegt zu werden.Several of these property values require object types that do not support a native type conversion from a text syntax in XAML, and thus require markup extensions in order to be set as an attribute value. Überprüfen Sie den Abschnitt XAML-Attributverwendung in der .NET Framework-Klassenbibliothek für jede Eigenschaft auf weitere Informationen. Die Zeichenfolge, die Sie für die XAML-Attributsyntax mit oder ohne weitere Markuperweiterungsverwendung verwenden, entspricht im Wesentlichen dem Wert, den Sie in einem Binding Ausdruck angeben, mit der Ausnahme, dass Sie keine Anführungszeichen um bindProp = value jede im Binding Ausdruck platzieren.Check the XAML Attribute Usage section in the .NET Framework Class Library for each property for more information; the string you use for XAML attribute syntax with or without further markup extension usage is basically the same as the value you specify in a Binding expression, with the exception that you do not place quotation marks around each bindProp=value in the Binding expression.

Die folgenden Eigenschaften Binding davon können nicht Binding mithilfe des{Binding} Markuperweiterungs-/Ausdrucksformulars festgelegt werden.The following are properties of Binding that cannot be set using the Binding markup extension/{Binding} expression form.

  • UpdateSourceExceptionFilter: Diese Eigenschaft erwartet einen Verweis auf eine Rückrufimplementierung.UpdateSourceExceptionFilter: this property expects a reference to a callback implementation. Auf Rückrufe/Methoden, die nicht auf Ereignishandler anzurechnen sind, kann in der XAML-Syntax nicht verwiesen werden.Callbacks/methods other than event handlers cannot be referenced in XAML syntax.

  • ValidationRules: Die Eigenschaft nimmt ValidationRule eine generische Auflistung von Objekten.ValidationRules: the property takes a generic collection of ValidationRule objects. Dies kann als Eigenschaftselement Binding in einem Objektelement ausgedrückt werden, verfügt jedoch Binding über keine leicht verfügbare Attributanalysetechnik für die Verwendung in einem Ausdruck.This could be expressed as a property element in a Binding object element, but has no readily available attribute-parsing technique for usage in a Binding expression. Siehe Referenzthema ValidationRulesfür .See reference topic for ValidationRules.

  • XmlNamespaceManager

BemerkungenRemarks

Wichtig

In Bezug auf die Binding Priorität der Abhängigkeitseigenschaft entspricht ein Ausdruck einem lokal festgelegten Wert.In terms of dependency property precedence, a Binding expression is equivalent to a locally set value. Wenn Sie einen lokalen Wert für eine Binding Eigenschaft Binding festlegen, die zuvor über einen Ausdruck verfügte, wird der vollständig entfernt.If you set a local value for a property that previously had a Binding expression, the Binding is completely removed. Weitere Informationen finden Sie unter Priorität von Abhängigkeitseigenschaftswerten.For details, see Dependency Property Value Precedence.

Das Beschreiben der Datenbindung auf einer grundlegenden Ebene wird in diesem Thema nicht behandelt.Describing data binding at a basic level is not covered in this topic. Siehe Datenbindungsübersicht.See Data Binding Overview.

Hinweis

MultiBindingund PriorityBinding unterstützen keine XAMLXAML Erweiterungssyntax.MultiBinding and PriorityBinding do not support a XAMLXAML extension syntax. Stattdessen würden Sie Eigenschaftselemente verwenden.You would instead use property elements. Siehe Referenzthemen MultiBinding PriorityBindingfür und .See reference topics for MultiBinding and PriorityBinding.

Boolesche Werte für XAML werden von der Groß-/Kleinschreibung nicht berücksichtigt.Boolean values for XAML are case insensitive. Sie können z. {Binding NotifyOnValidationError=true} {Binding NotifyOnValidationError=True}B. entweder oder angeben.For example you could specify either {Binding NotifyOnValidationError=true} or {Binding NotifyOnValidationError=True}.

Bindungen, die eine Datenüberprüfung beinhalten, Binding werden in {Binding ...} der Regel ValidatesOnDataErrors durch ValidatesOnExceptions ein explizites Element und nicht als Ausdruck angegeben, und das Festlegen oder in einem Ausdruck ist ungewöhnlich.Bindings that involve data validation are typically specified by an explicit Binding element rather than as a {Binding ...} expression, and setting ValidatesOnDataErrors or ValidatesOnExceptions in an expression is uncommon. Dies liegt daran, dass die companion-Eigenschaft ValidationRules nicht ohne weiteres im Ausdrucksformular festgelegt werden kann.This is because the companion property ValidationRules cannot be readily set in the expression form. Weitere Informationen finden Sie unter Implementieren der Bindungsvalidierung.For more information, see Implement Binding Validation.

Binding ist eine Markuperweiterung.Binding is a markup extension. Markuperweiterungen werden in der Regel implementiert, wenn Attributwerte nicht literale Werte oder Handlernamen entfernt werden müssen, und die Anforderung globaler ist als Typkonverter, die bestimmten Typen oder Eigenschaften zugeordnet sind.Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than type converters attributed on certain types or properties. Alle Markuperweiterungen in XAML verwenden die { und } Zeichen in ihrer Attributsyntax, d. h. die Konvention, nach der ein XAML-Prozessor erkennt, dass eine Markuperweiterung den Zeichenfolgeninhalt verarbeiten muss.All markup extensions in XAML use the { and } characters in their attribute syntax, which is the convention by which a XAML processor recognizes that a markup extension must process the string contents. Weitere Informationen finden Sie unter Markuperweiterungen und WPF-XAML.For more information, see Markup Extensions and WPF XAML.

Bindingist eine atypische Markuperweiterung, da die Binding Klasse, die die Erweiterungsfunktionalität für die XAML-Implementierung von WPF implementiert, auch mehrere andere Methoden und Eigenschaften implementiert, die nicht mit XAML verknüpft sind.Binding is an atypical markup extension in that the Binding class that implements the extension functionality for WPF's XAML implementation also implements several other methods and properties that are not related to XAML. Die anderen Member sollen Binding eine vielseitigere und eigenständigere Klasse erstellen, die viele Datenbindungsszenarien zusätzlich zur Funktion als XAML-Markuperweiterung adressieren kann.The other members are intended to make Binding a more versatile and self-contained class that can address many data binding scenarios in addition to functioning as a XAML markup extension.

Siehe auchSee also