Ich habe eine WPF Window
und irgendwo gibt es eine, ListView
an die ich eine binde List<string>
.
Jetzt gibt es irgendwo in meinem ListView
eine TextBox
und die Content
Eigenschaft ist auf eingestellt {Binding}
.
Aber das ist die Abkürzung. Wie schreibe ich die vollständige Bindung, um an sich selbst zu binden?
{Binding Path=Self}
funktioniert auch nicht {Binding Self}
(wobei Letzteres eine Abkürzung für Ersteres ist).
wpf
data-binding
binding
self
Schlange
quelle
quelle
Antworten:
Kurze Antwort :
{Binding}
ist keine Abkürzung für "Bindung an sich selbst" (im Sinne von RelativeSource.Self ). Eher{Binding}
ist äquivalent zu{Binding Path=.}
, was an die aktuelle Quelle bindet.Um es näher zu erläutern : Eine Bindung hat eine Quelle und einen Pfad . Sie können beispielsweise eine "Bindung an sich selbst" durchführen, indem Sie verwenden
Dadurch wird die Quelle jedoch auf das Steuerelement selbst festgelegt, sodass versucht wird, auf die Eigenschaft
x
des UI-Steuerelements zuzugreifen (und nicht auf die Eigenschaftx
des aktuellen Datenkontexts). Soweit ich Ihre Frage verstanden habe, ist dies nicht das, was Sie wollen. Insbesondere ist es nicht das, was es{Binding}
tut:{Binding}
Die Quelle bleibt wie sie ist (normalerweise dieDataContext
eines übergeordneten Elements) und bindet an die Quelle selbst (entsprichtPath=.
).quelle
CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}"
, die SelectedItems an den Bound ICommand übergibt.null
Wird jedoch übergeben, wenn über das ContextMenu zugegriffen wird. Ich habe versucht,CommandParameter=
"{Binding SelectedItems}",
"{Binding ElementName = MyDataGrid, Path = SelectedItems}" `und"{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}"
.