Eu tenho um WPF Window
e em algum lugar há um ListView
onde eu vinculo um List<string>
.
Agora, em algum lugar do meu ListView
há um TextBox
e a Content
propriedade está definida como {Binding}
.
Mas esta é a abreviatura. Como escrevo a vinculação completa para vincular a si mesma?
{Binding Path=Self}
não funciona, nem funciona {Binding Self}
(onde o último é um atalho para o primeiro).
wpf
data-binding
binding
self
Serpente
fonte
fonte
Respostas:
Resposta curta : não
{Binding}
é um atalho para "vincular a si mesmo" (no sentido de RelativeSource.Self ). Em vez disso, é equivalente a , que se liga à fonte atual.{Binding}
{Binding Path=.}
Para elaborar : uma ligação tem uma origem e um caminho . Você pode fazer uma "ligação a si mesmo", por exemplo, usando
<myUIControl myProperty="{Binding RelativeSource={RelativeSource Self}, Path=x}" />
Isso, no entanto, define a origem do próprio controle, portanto, ele tentará acessar a propriedade
x
do controle da interface do usuário (em vez da propriedadex
do contexto de dados atual). Pelo que entendi sua pergunta, não é isso que você quer; em particular, não é o que{Binding}
faz:{Binding}
mantém a fonte como ela está (geralmente oDataContext
de algum elemento pai) e se liga à própria fonte (equivalente aPath=.
).fonte
CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}"
, ele vai passar os SelectedItems para o Bound ICommand. No entanto,null
é passado se for acessado por meio do ContextMenu. Eu tenteiCommandParameter=
"{Binding SelectedItems}",
"{Binding ElementName = MyDataGrid, Path = SelectedItems}" `e"{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}"
.