J'ai un WPF Window
, et quelque part il y a un ListView
auquel je lie un List<string>
.
Maintenant, quelque part dans mon ListView
il y a un TextBox
et la Content
propriété est définie sur {Binding}
.
Mais c'est la sténographie. Comment écrire la liaison complète pour la lier à elle-même?
{Binding Path=Self}
ne fonctionne pas, non plus {Binding Self}
(où le dernier est un raccourci pour le premier).
wpf
data-binding
binding
self
Serpent
la source
la source
Réponses:
Réponse courte :
{Binding}
n'est pas un raccourci pour «se lier à lui-même» (au sens de RelativeSource.Self ). Au contraire,{Binding}
équivaut à{Binding Path=.}
, qui se lie à la source actuelle.Pour élaborer : Une liaison a une source et un chemin . Vous pouvez effectuer une "liaison à lui-même", par exemple, en utilisant
<myUIControl myProperty="{Binding RelativeSource={RelativeSource Self}, Path=x}" />
Cependant, cela définit la source sur le contrôle lui-même, de sorte qu'il essaie d'accéder à la propriété
x
du contrôle d'interface utilisateur (plutôt qu'à la propriétéx
du contexte de données actuel). D'après la façon dont j'ai compris votre question, ce n'est pas ce que vous voulez; en particulier, ce n'est pas ce qui{Binding}
fait:{Binding}
conserve la source telle qu'elle est (généralement celleDataContext
d'un élément parent) et se lie à la source elle-même (équivalent àPath=.
).la source
CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}"
, il passera les SelectedItems à l'ICommand Bound. Cependant,null
est transmis s'il est accédé via le ContextMenu. J'ai essayéCommandParameter=
"{Binding SelectedItems}",
"{Binding ElementName = MyDataGrid, Path = SelectedItems}" `et"{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}"
.