Share via


Bindung als Markuperweiterung

Aktualisiert: November 2007

Überträgt einen Eigenschaftenwert in einen datengebundenen Wert, indem ein Objekt für den Zwischenausdruck erstellt und der Datenkontext interpretiert wird, der auf das Element zur Laufzeit angewendet wird.

Verwendung von XAML-Attributen

<object property="{Binding}" .../>

- oder -

<object property="{Binding  bindingPropertyName1=value,
  bindingPropertyName2=value,
  bindingPropertyNameN=value}" ...
/>

Verwendung von XAML-Objektelementen

<object>
  <object.property>
    <Binding/>
  </object.property>
</object>

- oder -

<object>
  <object.property>
    <Binding      bindingPropertyName1="value"
      bindingPropertyName2="value"
      bindingPropertyNameN="value"
    />
  </object.property>
</object>

Jede in der Folge aufgeführte Eigenschaft, die in der Attributsyntax des Beispiels als Eigenschaft=Wertepaar festgelegt würde, kann stattdessen als Attribut des Binding-Elements, wie in der Objektelementsyntax definiert, festgelegt werden.

XAML-Werte

bindingPropertyName#

Der Name der festzulegenden Binding-Eigenschaft. Nicht alle Binding-Eigenschaften können mit der Bindungserweiterung festgelegt werden, und manche Eigenschaften können nur festgelegt werden, indem weitere verschachtelte Markuperweiterungen verwendet werden. Weitere Informationen finden Sie im Abschnitt "Bindungseigenschaften, die mit der Bindungserweiterung festgelegt werden können".

value

Der Wert, der für die Eigenschaft festgelegt wird. Die Behandlung des Attributwerts hängt letztendlich vom speziellen Typ und von der Logik des bindingPropertyName ab, der festgelegt wird.

Bindungseigenschaften, die mit der Bindungserweiterung festgelegt werden können

Die in diesem Thema veranschaulichte Syntax verwendet die generische Näherung bindingPropertyName=value, da es viele Eigenschaften von BindingBase oder Binding mit Lese-/Schreibzugriff gibt, die anhand der Binding-Markuperweiterungssyntax festgelegt werden können. Sie können in jeder Reihenfolge festgelegt werden. Grundsätzlich können Sie keine oder mehrere der in der folgenden Liste aufgeführten Eigenschaften festlegen, indem Sie Eigenschaft=Wert-Paare verwenden und durch ein Komma voneinander trennen.

Einige dieser Eigenschaftenwerte erfordern Objekttypen, die keine systemeigene Typkonvertierung unterstützen. Für sie müssen daher weitere Verwendungsarten von Markuperweiterungen in XAML als Attributwert festgelegt werden. Ermitteln Sie in der Referenzdokumentation der jeweiligen Eigenschaften im Abschnitt zur Verwendung von XAML-Attributen die korrekte Attributsyntax.

Folgende Binding-Eigenschaften können nicht mithilfe der Binding-Markuperweiterung festgelegt werden.

Hinweise

Die hier angegebenen bindingPropertyName-Platzhalter entsprechen den Namen einiger deklarierter festlegbarer Eigenschaften der Binding-Klasse, und die Wertezeichenfolgen entsprechenden dem, wie diese Eigenschaftenwerte als XAML-Attribut in einem Binding-Element, das als XAML-Element deklariert ist, festgelegt würden.

Das Konzept der Datenbindung wird an dieser Stelle nicht veranschaulicht. Weitere Informationen über Konzepte finden Sie unter Übersicht über Datenbindung. Weitere Informationen über alternative Syntax finden Sie unter Übersicht über Bindungsdeklarationen. Die Erläuterungen zur alternativen Syntax beschreiben u. a., wie gleichbedeutende Bindungen von einer Reihe von möglichen Syntaxarten erstellt werden, z. B. Attributeigenschaften eines Binding-Objektelements in XAML, Eigenschaftenelementsyntax eines Binding-Objekts oder das Verfahren zur Erstellung einer Bindung mithilfe von SetBinding oder des Binding-Konstruktors.

Wichtiger Hinweis:

Hinsichtlich des Vorrangs einer Abhängigkeitseigenschaft entspricht ein Bindungsausdruck einem lokal festgelegten Wert. Wenn Sie einen lokalen Wert für eine Eigenschaft festlegen, die zuvor über einen Binding-Ausdruck verfügte, wird die Binding vollständig entfernt. Ausführliche Informationen finden Sie unter Priorität von Abhängigkeitseigenschaftenwerten.

Tipp

MultiBinding und PriorityBinding unterstützen keine XAML-Erweiterungssyntax (trotz gemeinsamer Nutzung derselben BindingBase-Klasse, die das XAML-Verhalten für Binding implementiert).

Binding ist eine Markuperweiterung. Markuperweiterungen werden in der Regel implementiert, wenn Attributwerte mit Escapezeichen versehen werden müssen, damit diese nicht als literale Werte oder als Handlernamen betrachtet werden, und diese Anforderung eher global und nicht nur durch den Einsatz von Typkonvertern für bestimmte Typen oder Eigenschaften erfüllt werden soll. Alle Markuperweiterungen in XAML verwenden die Zeichen { und } in ihrer Attributsyntax. Dies ist die Konvention, durch die ein XAML-Prozessor erkennt, dass das Attribut von einer Markuperweiterung verarbeitet werden muss. Weitere Informationen finden Sie unter Markuperweiterungen und XAML. Binding ist insofern eine ungewöhnliche Markuperweiterung, als dass die Binding-Klasse, die die Erweiterungsfunktion implementiert, auch einige andere Methoden und Eigenschaften implementiert. Diese anderen Member sind keine direkte Anforderung für die Markuperweiterung. Die Member dienen dazu, aus der Binding-Klasse eine vielseitigere und in sich geschlossene Klasse zu machen, die zusätzlich zu ihrer Funktion als XAML-Markuperweiterung viele Datenbindungsszenarien adressiert.

Siehe auch

Konzepte

Übersicht über Datenbindung

Übersicht über Bindungsdeklarationen

Übersicht über XAML

Markuperweiterungen und XAML

Referenz

Binding