Mam WPF Window
i gdzieś jest miejsce, do ListView
którego się powiążę List<string>
.
Teraz gdzieś w moim ListView
jest TextBox
i Content
właściwość jest ustawiona na {Binding}
.
Ale to jest skrót. Jak napisać pełne powiązanie, aby się ze sobą powiązać?
{Binding Path=Self}
nie działa, też nie {Binding Self}
(gdzie to drugie jest skrótem do pierwszego).
wpf
data-binding
binding
self
Wąż
źródło
źródło
Odpowiedzi:
Krótka odpowiedź :
{Binding}
to nie skrót dla „wiązanie do siebie” (w sensie RelativeSource.Self ). Raczej{Binding}
jest odpowiednikiem{Binding Path=.}
, który wiąże się z bieżącym źródłem.Aby rozwinąć : Wiązanie ma źródło i ścieżkę . Możesz wykonać „powiązanie ze sobą”, na przykład za pomocą
<myUIControl myProperty="{Binding RelativeSource={RelativeSource Self}, Path=x}" />
To jednak ustawia źródło na samą kontrolkę, więc spróbuje uzyskać dostęp do właściwości
x
kontrolki interfejsu użytkownika (zamiast właściwościx
bieżącego kontekstu danych). Z tego, jak zrozumiałem twoje pytanie, nie tego chcesz; w szczególności nie jest tym, co{Binding}
robi:{Binding}
zachowuje źródło tak, jak jest (zwykle jest toDataContext
element rodzica) i wiąże się z samym źródłem (odpowiednikPath=.
).źródło
CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}"
, przekaże SelectedItems do Bound ICommand. Jednaknull
jest przekazywany, jeśli dostęp do niego uzyskuje się za pośrednictwem ContextMenu. PróbowałemCommandParameter=
"{Binding SelectedItems}",
"{Binding ElementName = MyDataGrid, Path = SelectedItems}" "i"{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}"
.