Freigeben über


Bindungsmarkuperweiterung

Zurückstellen eines Eigenschaftswerts als datengebundener Wert, Erstellen eines Zwischenausdrucksobjekts und Interpretieren des Datenkontexts, der für das Element und seine Bindung zur Laufzeit gilt.

Verwendung von Bindungsausdrücken

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

Syntaxhinweise

In diesen Syntaxen sind die [] und * keine Literale. Sie sind Teil einer Notation, um anzugeben, dass Null oder mehr bindProp=Wertpaare verwendet werden können, mit einem , Trennzeichen zwischen diesen und vorhergehenden bindProp=Wertpaaren.

Alle im Abschnitt "Binding Properties That Can Be Set with the Binding Extension" aufgeführten Eigenschaften können stattdessen mithilfe von Attributen eines Binding Objektelements festgelegt werden. Das ist jedoch nicht wirklich die Verwendung der Markup-Erweiterung `Binding`, sondern nur die allgemeine XAML-Verarbeitung von Attributen, die Eigenschaften der CLR-Klasse `Binding` festlegen. Mit anderen Worten, <BindingbindProp1="value1"[bindPropN valueN=""]*/> ist eine gleichwertige Syntax für Attribute der Binding Objektelementverwendung anstelle einer Binding Ausdrucksverwendung. Weitere Informationen zur XAML-Attributnutzung bestimmter Eigenschaften Bindingfinden Sie im Abschnitt "XAML-Attributverwendung" der relevanten Eigenschaft Binding in der .NET Framework-Klassenbibliothek.

XAML-Werte

Wert BESCHREIBUNG
bindProp1, bindPropN Der Name der Binding-Eigenschaft oder BindingBase, die festgelegt werden soll. Nicht alle Binding Eigenschaften können mit der Binding Erweiterung festgelegt werden, und einige Eigenschaften können nur mithilfe weiterer geschachtelter Markuperweiterungen innerhalb eines Binding Ausdrucks festgelegt werden. Siehe Abschnitt "Bindungseigenschaften, die mit der Bindungserweiterung festgelegt werden können".
value1, valueN Der Wert, auf den die Eigenschaft festgelegt werden soll. Die Behandlung des Attributwerts ist letztendlich spezifisch für den Typ und die Logik der festzulegenden spezifischen Binding Eigenschaft.
path Die Pfadzeichenfolge, die die implizite Binding.Path Eigenschaft festlegt. Siehe auch PropertyPath-XAML-Syntax.

Nicht qualifizierte {Binding}

Die in "Binding Expression Usage" gezeigte {Binding}-Verwendung erstellt ein Binding-Objekt mit Standardwerten, einschließlich eines anfänglichen Binding.Path von null. Dies ist in vielen Szenarien weiterhin nützlich, da die Erstellung von Binding möglicherweise auf wichtige Datenbindungseigenschaften basiert, wie beispielsweise das Festlegen von Binding.Path und Binding.Source im Laufzeitdatenkontext. Weitere Informationen zum Konzept des Datenkontexts finden Sie unter "Datenbindung".

Impliziter Pfad

Die Binding Markuperweiterung verwendet Binding.Path als konzeptionelle "Standardeigenschaft", bei dem Path= nicht im Ausdruck erscheinen muss. Wenn Sie einen Binding Ausdruck mit einem impliziten Pfad angeben, muss der implizite Pfad zuerst im Ausdruck vor allen anderenbindProp=valuePaaren angezeigt werden, bei denen die Binding Eigenschaft mit dem Namen angegeben wird. Beispiel: {Binding PathString}, wobei PathString eine Zeichenfolge ist, die ausgewertet wird, um den Wert von Binding.Path in der durch die Verwendung der Markup-Erweiterung erstellten Binding zu ergeben. Sie können einen impliziten Pfad mit anderen benannten Eigenschaften nach dem Kommatrennzeichen anfügen, {Binding LastName, Mode=TwoWay}z. B. .

Bindungseigenschaften, die mit der Bindungserweiterung festgelegt werden können

Die in diesem Thema gezeigte Syntax verwendet die allgemeine bindProp=value Annäherung, da es viele Lese-/Schreibeigenschaften von BindingBase oder Binding gibt, die über die Binding Markuperweiterungs-/Ausdruckssyntax festgelegt werden können. Sie können in beliebiger Reihenfolge festgelegt werden, mit Ausnahme einer impliziten Binding.Path. (Sie haben die Möglichkeit, explizit anzugeben Path=, in welchem Fall sie in beliebiger Reihenfolge festgelegt werden kann). Im Grunde können Sie null oder mehr der Eigenschaften in der nachstehenden Liste festlegen, indem Sie Paare verwenden bindProp=value , die durch Kommas getrennt sind.

Einige dieser Eigenschaftswerte erfordern Objekttypen, die keine native Typkonvertierung aus einer Textsyntax in XAML unterstützen und daher Markuperweiterungen erfordern, um als Attributwert festgelegt werden zu können. Weitere Informationen finden Sie im Abschnitt "XAML-Attributverwendung" in der .NET Framework-Klassenbibliothek für jede Eigenschaft. Die Zeichenfolge, die Sie für die XAML-Attributsyntax mit oder ohne weitere Verwendung der Markuperweiterung verwenden, ist im Grunde identisch mit dem Wert, den Sie in einem Binding Ausdruck angeben, mit der Ausnahme, dass Sie keine Anführungszeichen in jedembindProp=valueAusdruck Binding platzieren.

Die folgenden Eigenschaften Binding können nicht mithilfe des Binding Markuperweiterungs-/{Binding} Ausdrucksformulars festgelegt werden.

  • UpdateSourceExceptionFilter: Diese Eigenschaft erwartet einen Verweis auf eine Rückrufimplementierung. Auf Rückrufe/Methoden außer Ereignishandlern kann in der XAML-Syntax nicht verwiesen werden.

  • ValidationRules: die Eigenschaft verwendet eine generische Auflistung von ValidationRule Objekten. Dies könnte als Eigenschaftselement in einem Binding Objektelement ausgedrückt werden, verfügt jedoch über keine leicht verfügbare Methode zur Attributanalyse für die Verwendung in einem Binding Ausdruck. Siehe Referenzthema für ValidationRules.

  • XmlNamespaceManager

Bemerkungen

Von Bedeutung

Im Hinblick auf die Rangfolge der Abhängigkeitseigenschaft entspricht ein Binding Ausdruck einem lokal festgelegten Wert. Wenn Sie einen lokalen Wert für eine Eigenschaft festlegen, die zuvor einen Binding Ausdruck hatte, wird der Binding Wert vollständig entfernt. Weitere Informationen finden Sie unter Priorität von Abhängigkeitseigenschaftswerten.

Die Beschreibung der Datenbindung auf einer grundlegenden Ebene wird in diesem Thema nicht behandelt. Siehe Übersicht über die Datenbindung.

Hinweis

MultiBinding und PriorityBinding unterstützen keine XAML-Erweiterungssyntax. Sie würden stattdessen Eigenschaftselemente verwenden. Siehe Referenzthemen für MultiBinding und PriorityBinding.

Boolesche Werte für XAML werden ohne Groß-/Kleinschreibung unterschieden. Sie können z. B. entweder {Binding NotifyOnValidationError=true} oder {Binding NotifyOnValidationError=True}.

Bindungen, die eine Datenüberprüfung umfassen, werden in der Regel durch ein explizites Binding-Element angegeben und nicht als {Binding ...}-Ausdruck, während das Festlegen von ValidatesOnDataErrors oder ValidatesOnExceptions in einem Ausdruck ungewöhnlich ist. Dies liegt daran, dass die Begleiteigenschaft ValidationRules im Ausdrucksformular nicht problemlos festgelegt werden kann. Weitere Informationen finden Sie unter Implementieren der Bindungsüberprüfung.

Binding ist eine Markup-Erweiterung. Markuperweiterungen werden in der Regel implementiert, wenn es eine Anforderung gibt, Attributwerte außer Literalwerten oder Handlernamen zu escapen, und die Anforderung ist globaler als Typkonverter, die bestimmten Typen oder Eigenschaften zugeordnet sind. Alle Markuperweiterungen in XAML verwenden die und { die } Zeichen in ihrer Attributsyntax. Dies ist die Konvention, mit der ein XAML-Prozessor erkennt, dass eine Markuperweiterung den Zeichenfolgeninhalt verarbeiten muss. Weitere Informationen finden Sie unter Markuperweiterungen und WPF-XAML.

Binding ist eine atypische Markuperweiterung, in der 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 zusammenhängen. Die anderen Member sollen eine vielseitigere und eigenständige Klasse erstellen Binding , die viele Datenbindungsszenarien zusätzlich zur Funktion als XAML-Markuperweiterung behandeln kann.

Siehe auch