Was bedeutet "{Binding Path =.}" Bei der WPF-Bindung?

91

Was {Binding Path=.}bedeutet eine WPF-Bindung?

Ich sehe einige Leute, die es benutzen, konnte aber keine Erklärung finden.

Gibt es andere spezielle Symbole in der Bindungssyntax (außer {Binding /})?

Sergey Aldoukhov
quelle

Antworten:

59

Dies ist eine Abkürzung für die Bindung an die aktuelle Quelle. Weitere Informationen finden Sie hier .

Aus der Dokumentation speziell:

Optional kann ein Punkt (.) -Pfad verwendet werden, um eine Bindung an die aktuelle Quelle herzustellen. Zum Beispiel Text="{Binding}"ist äquivalent zu Text="{Binding Path=.}".

Micahtan
quelle
1
@ Ray - meine Gedanken genau. Wenn Sie in Kurzschrift gehen, warum dort aufhören?
Micahtan
5
Ich kann nicht mit MSDN streiten, aber es gibt immer noch einen Unterschied. {Bindung} kann nicht für ein Objekt selbst verwendet werden (da in beide Richtungen eine Eigenschaft erforderlich ist), während {Bindungspfad =.} Funktioniert.
Sergey Aldoukhov
@Sergey - Haben Sie ein Codebeispiel, bei dem {Binding} nicht funktioniert, {Binding Path =.} Jedoch? Wenn ja, muss MSDN wahrscheinlich aktualisiert werden ...
micahtan
Einfach: var s = "test; DataContext = s; und in <TextBox Text = {Binding} /> - funktioniert nicht. Aber MSDN ist kein Wiki ...
Sergey Aldoukhov
8
Ein weiteres Beispiel: <TextBlock Text = "{Binding Converter = ...}" /> funktioniert nicht, da Sie den Pfad festlegen müssen. In diesem Fall ist Path =. ist nützlich.
Nicolas
67

Ich fand dieses WPF Binding CheatSheet vor ein paar Monaten und finde es sehr nützlich, besonders für alle, die WPF lernen. Es gibt einige Rechtschreibfehler, aber es ist immer noch ziemlich gut.

Hier ist ein kleiner Auszug (der eine tabellarische Formatierung haben soll):

Basic Binding   
{Binding}  Bind to current DataContext. 
{Binding Name}  Bind to the “Name” proeprty of the current DataContext. 
{Bindind Name.Length}  Bind to the Length property of the object in the Name property of the current DataContext. 
{Binding ElementName=SomeTextBox, Path=Text}  Bind to the “Text” property of the element XAML element with name=”SomeTextBox” or x:Name=”SomeTextBox”. 

Direkter Link zu CheatSheet

Ryan Versaw
quelle
2
schön, aber was ist {Binding.}. Ich suche nach einer Erklärung für diese, aber ich kann sie nicht finden?
Batmaci
@batmaci Ich möchte sagen, dass es äquivalent zu ist {Binding }, aber es ist schon einige Jahre her, seit ich viel mit Xaml gearbeitet habe, also bin ich mir nicht sicher.
Ryan Versaw
@ Batmaci, Jahre später ... {Binding string}ist ähnlich wie {Binding Path=string}. stringwird nicht verwendet, um die Eigenschaft Pathdirekt zu initialisieren , sondern als Parameter für den Konstruktor, Binding (string path)der dann die PathEigenschaft initialisiert . Dies funktioniert nur, wenn die Zeichenfolge das erste Token danach ist Binding, der Rest sind reguläre Initialisierer (Eigenschaft = Wertepaare). Wenn Sie das wissen, Binding .ist dies tatsächlich gleich Binding Path=.und die Eigenschaft Die Pfadsyntax ist hier verfügbar .
Minuten