WPF Bind a se stesso


86

Ho un WPF Windowe da qualche parte c'è un a ListViewcui associo List<string>a.

Ora da qualche parte nel mio ListViewc'è un TextBoxe la Contentproprietà è impostata su {Binding}.

Ma questa è la scorciatoia. Come scrivo il binding completo per legarlo a se stesso?

{Binding Path=Self}non funziona, né funziona {Binding Self}(dove il secondo è una scorciatoia per il primo).


Voglio menzionare un post relativo a questo argomento. La risposta di cui sopra è totalmente corretta, ma c'è un punto che completa la risposta di cui sopra. Ecco il link .
Ali Fattahian

Risposte:


247

Risposta breve : non{Binding} è una scorciatoia per "legarsi a se stesso" (nel senso di RelativeSource.Self ). Piuttosto, è equivalente a , che si lega alla sorgente corrente.{Binding} {Binding Path=.}


Per elaborare : un'associazione ha una fonte e un percorso . È possibile eseguire un "collegamento a se stesso", ad esempio, utilizzando

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

Ciò, tuttavia, imposta l' origine sul controllo stesso, quindi tenterà di accedere alla proprietà xdel controllo dell'interfaccia utente (anziché alla proprietà xdel contesto dati corrente). Da come ho capito la tua domanda, questo non è quello che vuoi; in particolare, non è ciò che {Binding}fa: {Binding}mantiene la fonte così com'è (solitamente l' DataContextelemento di qualche elemento genitore) e si lega alla fonte stessa (equivalente a Path=.).


Ho un DataGrid in cui se l'utente accede a uno dei comandi MenuItem di ContextMenu tramite un KeyBinding di InputBinding il cui CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}", passerà SelectedItems al Bound ICommand. Tuttavia, nullviene passato se vi si accede tramite ContextMenu. Ho provato CommandParameter="{Binding SelectedItems}" , "{Binding ElementName = MyDataGrid, Path = SelectedItems}" "e "{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}".
Tom

@ Tom: è difficile rispondere in un commento. Crea una nuova domanda e fornisci un esempio riproducibile minimo .
Heinzi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.