2009-12-15 19 views
64

Ich habe eine WPF Window, und irgendwo gibt es eine ListView, wo ich eine List<string> zu binden bin.WPF Bindung an sich selbst

Jetzt irgendwo in meinem ListView gibt es eine TextBox und die Content Eigenschaft auf {Binding}.

Aber das ist die Kurzschrift. Wie schreibe ich die vollständige Bindung an sich selbst zu binden?

{Binding Path=Self} funktioniert nicht, auch nicht {Binding Self} (wo letztere eine Abkürzung für die ehemalige ist).

+0

Ich möchte auf einen Beitrag zu diesem Thema erwähnen.Die obige Antwort ist völlig richtig, aber es gibt einen Punkt, der die obige Antwort vervollständigt. Hier ist der [Link] (http://stackoverflow.com/questions/11995318/how-do-i-bind-to-relativesource-self). – AAAA

Antwort

202

Kurze Antwort: {Binding} ist nicht eine Abkürzung für „verbindlich für mich“ (im Sinne von RelativeSource.Self). Eher, {Binding}is equivalent to{Binding Path=.}, die an die aktuelle Quelle bindet.


zu erarbeiten: Eine Bindung hat eine Quelle und einen Weg. Sie können eine „an sich bindet“ zu tun, zum Beispiel durch

<myUIControl myProperty="{Binding RelativeSource={RelativeSource Self}, Path=x}" /> 

Dies ist jedoch mit, setzt die Quelle an die Steuerung selbst, so wird es versuchen Eigenschaft zuzugreifen x der UI-Steuerung (eher als Eigenschaft x des aktuellen Datenkontexts). Wie ich deine Frage verstanden habe, ist das nicht das, was du willst; insbesondere ist es nicht, was {Binding} tut: {Binding} hält die Quelle wie es ist (in der Regel die DataContext eines Elternelements) und bindet an die Quelle selbst (entspricht Path=.).

+1

Vielen Dank! – Snake

+1

Gute Antwort, ich würde dir +2 geben, wenn ich könnte. –

+0

Was für eine großartige Antwort! –