Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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, <Binding
bindProp1="
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
=value
Paaren 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
=value
Ausdruck Binding
platzieren.
BindingGroupName: eine Zeichenfolge, die eine mögliche Bindungsgruppe identifiziert. Dies ist ein relativ fortgeschrittenes Bindungskonzept; siehe Referenzseite für BindingGroupName.
BindsDirectlyToSource: Boolean, kann entweder
true
oderfalse
. 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. Der Wert in diesem Fall ist eine Instanz einer benutzerdefinierten Konverterklasse.ConverterCulture: Kann im Ausdruck als standardbasierter Bezeichner festgelegt werden; weitere Informationen finden Sie im 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, ist für diese Verwendung ein Objektverweis erforderlich, z. B. eine geschachtelte StaticResource-Markuperweiterung.ElementName: sich gegenseitig ausschließend im Vergleich zu RelativeSource und Source; jede dieser Bindungseigenschaften repräsentiert eine bestimmte Bindungsmethodik. Siehe Übersicht über die Datenbindung.
FallbackValue: kann als
bindProp
=value
Zeichenfolge im Ausdruck festgelegt werden, dies hängt jedoch vom Typ des übergebenen Werts ab. Wenn Sie einen Verweistyp übergeben, ist ein Objektverweis erforderlich, z. B. eine geschachtelte StaticResource-Markuperweiterung.IsAsync: Boolean, kann entweder
true
oderfalse
. Der Standardwert lautetfalse
.Mode: Der Wert ist ein Konstantenname aus der BindingMode Enumeration. Beispiel:
{Binding Mode=OneWay}
.NotifyOnSourceUpdated: Boolean, kann entweder
true
oderfalse
. Der Standardwert lautetfalse
.NotifyOnTargetUpdated: Boolean, kann entweder
true
oderfalse
. Der Standardwert lautetfalse
.NotifyOnValidationError: Boolean, kann entweder
true
oderfalse
. Der Standardwert lautetfalse
.Path: eine Zeichenfolge, die einen Pfad zu einem Datenobjekt oder einem allgemeinen 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 repräsentiert eine bestimmte Bindungsmethode. Siehe Übersicht über die Datenbindung. Erfordert eine geschachtelte RelativeSource MarkupExtension-Verwendung , um den Wert anzugeben.
Source: sich gegenseitig ausschließend im Vergleich zu RelativeSource und ElementName; jede dieser Bindungseigenschaften repräsentiert eine bestimmte Bindungsmethodik. Siehe Übersicht über die Datenbindung. Erfordert eine geschachtelte Erweiterungsverwendung, in der Regel eine StaticResource-Markuperweiterung , die sich auf eine Objektdatenquelle aus einem Schlüsselressourcenwörterbuch bezieht.
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 Sie einen Verweistyp für den Wert übergeben, ist ein Objektverweis erforderlich, z. B. eine geschachtelte StaticResource-Markuperweiterung.UpdateSourceTrigger: Der Wert ist ein Konstantenname aus der UpdateSourceTrigger Enumeration. Beispiel:
{Binding UpdateSourceTrigger=LostFocus}
. Bestimmte Steuerelemente weisen möglicherweise unterschiedliche Standardwerte für diese Bindungseigenschaft auf. Siehe UpdateSourceTrigger.ValidatesOnDataErrors: Boolean, kann entweder
true
oderfalse
. Der Standardwert lautetfalse
. Siehe Anmerkungen.ValidatesOnExceptions: Boolean, kann entweder
true
oderfalse
. Der Standardwert lautetfalse
. Siehe Anmerkungen.XPath: eine Zeichenfolge, die einen Pfad zum XMLDOM einer XML-Datenquelle beschreibt. Siehe An XML-Daten binden mithilfe von XMLDataProvider und XPath-Abfragen.
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.
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
.NET Desktop feedback