WPF se enlaza a sí mismo


86

Tengo un WPF Window, y en algún lugar hay un ListViewlugar al que enlazo List<string>.

Ahora, en algún lugar de mi ListViewhay un TextBoxy la Contentpropiedad está configurada en {Binding}.

Pero esta es la taquigrafía. ¿Cómo escribo el enlace completo para enlazarlo a sí mismo?

{Binding Path=Self}no funciona, tampoco lo hace {Binding Self}(donde el último es un atajo para el primero).


Quiero mencionar una publicación relacionada con este tema. La respuesta anterior es totalmente correcta pero hay un punto que completa la respuesta anterior. Aquí está el enlace .
Ali Fattahian

Respuestas:


247

Respuesta corta : no{Binding} es un atajo para "vincularse a sí mismo" (en el sentido de RelativeSource.Self ). Más bien, es equivalente a , que se une a la fuente actual.{Binding} {Binding Path=.}


Para elaborar : un enlace tiene una fuente y una ruta . Puede hacer un "enlace consigo mismo", por ejemplo, utilizando

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

Sin embargo, esto establece la fuente en el control en sí, por lo que intentará acceder a la propiedad xdel control de la interfaz de usuario (en lugar de a la propiedad xdel contexto de datos actual). Por cómo entendí tu pregunta, esto no es lo que quieres; en particular, no es lo que {Binding}hace: {Binding}mantiene la fuente como está (generalmente la DataContextde algún elemento padre) y se une a la fuente misma (equivalente a Path=.).


Tengo un DataGrid donde si el usuario accede a uno de los comandos de MenuItem de su ContextMenu a través de un KeyBinding de InputBinding cuyo CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}", pasará los SelectedItems al Bound ICommand. Sin embargo, nullse pasa si se accede a través del ContextMenu. He intentado CommandParameter="{Binding} SelectedItems" , "{Binding ElementName = MiDataGrid, Path = SelectedItems}" `y "{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}".
Tom

@Tom: Esto es difícil de responder en un comentario. Cree una nueva pregunta y proporcione un ejemplo mínimo reproducible .
Heinzi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.