Bindung als Markuperweiterung
Definiert einen Eigenschaftswert als datengebundenen Wert, wobei ein Zwischenausdrucksobjekt erstellt und der Datenkontext, der für das Element und seine Bindung gilt, zur Laufzeit interpretiert wird.
Verwendung des Bindungsausdrucks
<object property="{Binding}" .../>
-or-
<object property="{Binding bindProp1=value1[, bindPropN=valueN]*}" ...
/>
-or-
<object property="{Binding path}" .../>
-or
<object property="{Binding path[, bindPropN=valueN]*}" .../>
Hinweise zur Syntax
In diesen Syntaxen sind die Inhaltstypen []
und *
nicht Literale. Sie sind Teil einer Notation, die anzeigt, dass null oder mehr bindProp=
-Wertepaare verwendet werden können, mit einem ,
-Trennzeichen zwischen ihnen und den vorangehenden bindProp=
-Wertepaaren.
Jede der Eigenschaften, die im Abschnitt „Bindungseigenschaften, die mit der Bindungserweiterung festgelegt werden können“ aufgeführt sind, könnte stattdessen über Attribute eines Binding-Objektelements festgelegt werden. Das ist jedoch nicht wirklich die Markuperweiterungsverwendung von Binding, es ist nur die allgemeine XAML-Verarbeitung von Attributen, die Eigenschaften der CLR-Binding-Klasse festlegen. Mit anderen Worten: <Binding
bindProp1="
value1"[
bindPropN="
valueN"]*/>
ist eine äquivalente Syntax für die Verwendung von Attributen des Binding-Objektelements anstelle der Verwendung eines Binding
-Ausdrucks. Weitere Informationen zur XAML-Attributverwendung spezifischer Eigenschaften von Binding finden Sie im Abschnitt „XAML-Attributnutzung“ der relevanten Eigenschaft von Binding in der .NET Framework-Klassenbibliothek.
XAML-Werte
Wert | Beschreibung |
---|---|
bindProp1, bindPropN |
Der Name der festzulegenden Eigenschaft Binding oder BindingBase. Nicht alle Binding-Eigenschaften können mit der Binding -Erweiterung festgelegt werden, und einige Eigenschaften sind nur mithilfe weiterer verschachtelter Markuperweiterungen in einem Binding -Ausdruck festgelegt. Siehe den Abschnitt „Bindungseigenschaften, die mit der Bindungserweiterung festgelegt werden können“. |
value1, valueN |
Der für die Eigenschaft festzulegende Wert. Die Bearbeitung des Attributwerts ist letztlich spezifisch für den Typ und die Logik der festgelegten spezifischen Binding-Eigenschaft. |
path |
Die Pfadzeichenfolge, die die implizite Binding.Path-Eigenschaft festlegt. Siehe auch XAML-Syntax von PropertyPath. |
Nicht qualifiziert {Bindung}
Die unter „Verwendung von Bindungsausdrücken“ gezeigte Verwendung von {Binding}
erstellt ein Binding-Objekt mit Standardwerten, das einen anfänglichen Binding.Path von null
enthält. Dies ist in vielen Szenarien weiterhin nützlich, da die erstellte Binding möglicherweise auf wichtige Datenbindungseigenschaften wie z. B. Binding.Path und Binding.Source, die im Laufzeitdatenkontext festgelegt werden, angewiesen ist. Weitere Informationen zum Konzept des Datenkontexts finden Sie unter Datenbindung.
Impliziter Pfad
Die Markuperweiterung Binding
verwendet Binding.Path als konzeptionelle „Standardeigenschaft“, wo Path=
nicht im Ausdruck erscheinen muss. Wenn Sie einen Binding
-Ausdruck mit einem impliziten Pfad angeben, muss der implizite Pfad zuerst im Ausdruck erscheinen, vor anderen bindProp
=value
-Paaren, in denen die Binding-Eigenschaft nach Name angegeben wird. Beispiel: {Binding PathString}
, wobei PathString
eine Zeichenkette ist, die als der Wert von Binding.Path in dem von der Markup-Erweiterung erstellten Binding ausgewertet wird. Sie können einen impliziten Pfad mit anderen benannten Eigenschaften nach dem Komma-Trennzeichen anhängen, z. B. {Binding LastName, Mode=TwoWay}
.
Bindungseigenschaften, die mit der Bindungserweiterung festgelegt werden können
Die in diesem Thema gezeigte Syntax verwendet die generische bindProp
=value
-Näherung, da viele Lese-/Schreibeigenschaften von BindingBase oder Binding vorhanden sind, die über die Binding
-Markuperweiterungs-/Ausdruckssyntax festgelegt werden können. Sie können in einer beliebigen Reihenfolge festgelegt werden, mit Ausnahme eines impliziten Binding.Path. (Sie haben die Möglichkeit, Path=
explizit anzugeben, in welchem Fall er in beliebiger Reihenfolge festgelegt werden kann). Grundsätzlich können Sie null oder mehr der Eigenschaften in der nachstehenden Liste festlegen, indem Sie bindProp
=value
- Paare verwenden, die durch Kommas getrennt sind.
Mehrere dieser Eigenschaftenwerte erfordern Objekttypen, die keine native Typkonvertierung aus einer Textsyntax in XAML unterstützen und daher Markuperweiterungen benötigen, um als Attributwert festgelegt werden zu können. Überprüfen Sie im Abschnitt „Verwendung von XAML-Attributen“ in der .NET Framework-Klassenbibliothek für jede Eigenschaft weitere Informationen; die Zeichenfolge, die Sie für die XAML-Attributsyntax mit oder ohne weitere Verwendung von Markuperweiterungen benutzen, ist grundsätzlich identisch mit dem Wert, den Sie in einem Binding
-Ausdruck angeben, mit der Ausnahme, dass Sie keine Anführungszeichen um jeden bindProp
=value
in dem Binding
-Ausdruck platzieren.
BindingGroupName: eine Zeichenfolge, die eine mögliche Bindungsgruppe identifiziert. Dies ist ein relativ fortgeschrittenes Bindungskonzept; siehe Referenzseite für BindingGroupName.
BindsDirectlyToSource: Boolesch, kann entweder
true
oderfalse
sein. Der Standardwert lautetfalse
.Converter: kann als
bindProp
=value
-Zeichenfolge im Ausdruck festgelegt werden, erfordert jedoch einen Objektverweis für den Wert, z. B. eine StaticResource-Markuperweiterung. In diesem Fall ist derWert eine Instanz einer benutzerdefinierten Konverterklasse.ConverterCulture: im Ausdruck als standardbasierter Bezeichner einstellbar; siehe das Referenzthema für ConverterCulture.
ConverterParameter: kann als
bindProp
=value
-Zeichenfolge im Ausdruck festgelegt werden, dies hängt jedoch vom Typ des übergebenen Parameters ab. Wenn ein Verweistyp für den Wert übergeben wird, erfordert diese Verwendung einen Objektverweis, z. B. eine verschachtelte StaticResource-Markuperweiterung.ElementName: gegenseitig ausschließend gegenüber RelativeSource und Source; jede dieser Bindungseigenschaften steht für eine bestimmte Bindungsmethodik. Siehe Übersicht über Datenbindung.
FallbackValue: kann als
bindProp
=value
-Zeichenfolge im Ausdruck festgelegt werden, dies hängt jedoch vom Typ des übergebenen Wertes ab. Wenn ein Verweistyp übergeben wird, erfordert diese Verwendung einen Objektverweis, z. B. eine verschachtelte StaticResource-Markuperweiterung.IsAsync: Boolesch, kann entweder
true
oderfalse
sein. Der Standardwert lautetfalse
.Mode: Wert ist ein Konstantenname aus der BindingMode-Aufzählung. Beispielsweise
{Binding Mode=OneWay}
.NotifyOnSourceUpdated: Boolesch, kann entweder
true
oderfalse
sein. Der Standardwert lautetfalse
.NotifyOnTargetUpdated: Boolesch, kann entweder
true
oderfalse
sein. Der Standardwert lautetfalse
.NotifyOnValidationError: Boolesch, kann entweder
true
oderfalse
sein. Der Standardwert lautetfalse
.Path: eine Zeichenfolge, die einen Pfad in ein Datenobjekt oder ein allgemeines Objektmodell beschreibt. Das Format bietet verschiedene Konventionen zum Durchlaufen eines Objektmodells, die in diesem Thema nicht angemessen beschrieben werden können. Siehe XAML-Syntax von PropertyPath.
RelativeSource: gegenseitig ausschließend gegenüber ElementName und Source; jede dieser Bindungseigenschaften steht für eine bestimmte Bindungsmethodik. Siehe Übersicht über Datenbindung. Erfordert die Verwendung einer verschachtelten RelativeSource-Markuperweiterung, um den Wert anzugeben.
Source: gegenseitig ausschließend gegenüber RelativeSource und ElementName; jede dieser Bindungseigenschaften steht für eine bestimmte Bindungsmethodik. Siehe Übersicht über Datenbindung. Erfordert die Verwendung einer verschachtelten Erweiterung, in der Regel eine StaticResource-Markuperweiterung, die auf eine Objektdatenquelle aus einem verschlüsselten Ressourcenverzeichnis verweist.
StringFormat: eine Zeichenfolge, die eine Zeichenfolgenformatkonvention für die gebundenen Daten beschreibt. Dies ist ein relativ fortgeschrittenes Bindungskonzept; siehe Referenzseite für StringFormat.
TargetNullValue: kann als
bindProp
=value
-Zeichenfolge im Ausdruck festgelegt werden, dies hängt jedoch vom Typ des übergebenen Parameters ab. Wenn ein Verweistyp für den Wert übergeben wird, erfordert dies einen Objektverweis, z. B. eine verschachtelte StaticResource-Markuperweiterung.UpdateSourceTrigger: Wert ist ein Konstantenname aus der UpdateSourceTrigger-Aufzählung. Beispielsweise
{Binding UpdateSourceTrigger=LostFocus}
. Bestimmte Steuerelemente verfügen möglicherweise über verschiedene Standardwerte für diese Bindungseigenschaft. Siehe UpdateSourceTrigger.ValidatesOnDataErrors: Boolesch, kann entweder
true
oderfalse
sein. Der Standardwert lautetfalse
. Siehe Hinweise.ValidatesOnExceptions: Boolesch, kann entweder
true
oderfalse
sein. Der Standardwert lautetfalse
. Siehe Hinweise.XPath: eine Zeichenfolge, die einen Pfad in den XMLDOM einer XML-Datenquelle beschreibt. Siehe Binden an XML-Daten mithilfe von XMLDataProvider und XPath-Abfragen.
Die folgenden Eigenschaften sind Eigenschaften von Binding, die nicht mithilfe des Binding
-Markuperweiterungs-/{Binding}
Ausdrucksformulars festgelegt werden können.
UpdateSourceExceptionFilter: Diese Eigenschaft erwartet einen Verweis auf eine Rückrufimplementierung. Rückrufe/Methoden außer Ereignishandlern können 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-Ob-jektelement ausgedrückt werden, hat jedoch keine leicht verfügbare Attributanalysetechnik für die Verwendung in einem
Binding
-Ausdruck. Siehe Referenzthema für ValidationRules.
Hinweise
Wichtig
Im Hinblick auf die Priorität 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 die Binding
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 Datenbindung.
Hinweis
MultiBinding und PriorityBinding unterstützen keine XAML-Erweiterungssyntax. Stattdessen würde man Eigenschaftenelemente verwenden. Weitere Informationen zu MultiBinding und PriorityBinding finden Sie in den Referenzthemen.
Bei booleschen Werten für XAML wird die Groß- und Kleinschreibung nicht berücksichtigt. Sie können z. B. {Binding NotifyOnValidationError=true}
oder {Binding NotifyOnValidationError=True}
angeben.
Bindungen, die die Datenüberprüfung umfassen, werden in der Regel durch ein explizites Binding
-Element und nicht als {Binding ...}
-Ausdruck angegeben, und die Einstellungen ValidatesOnDataErrors oder ValidatesOnExceptions in einem Ausdruck sind ungewöhnlich. Dies liegt daran, dass die Begleiteigenschaft ValidationRules nicht einfach im Ausdrucksformular festgelegt werden kann. Weitere Informationen finden Sie unter Implementieren der Bindungsprüfung.
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 ist eher global und nicht nur durch den Einsatz von Typkonvertern für bestimmte Typen oder Eigenschaften geprägt. Alle Markuperweiterungen in XAML verwenden die Zeichen {
und }
in der Attributsyntax. Dies ist die Konvention, durch die ein XAML-Prozessor erkennt, dass die Zeichenfolgeninhalte von einer Markuperweiterung verarbeitet werden müssen. 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 verknüpft sind. Die anderen Member sollen Binding zu einer vielseitigeren und in sich geschlossenen Klasse machen, die neben ihrer Funktion als XAML-Markuperweiterung auch viele Datenbindungsszenarien abdecken kann.
Weitere Informationen
.NET Desktop feedback