2009-12-15 6 views
64

Ho un WPF Window, e da qualche parte c'è un ListView in cui legare un List<string> a.WPF Bind a se stesso

Ora da qualche parte nel mio ListView c'è un TextBox e la proprietà Content è impostato su {Binding}.

Ma questa è la stenografia. Come scrivere l'associazione completa per legare a se stessa?

{Binding Path=Self} non funziona, nemmeno {Binding Self} (dove quest'ultimo è una scorciatoia per il primo).

+0

Voglio citare un post relativo a questo argomento. La risposta sopra è completamente corretta ma c'è un punto che completa la risposta di cui sopra. Ecco il [collegamento] (http://stackoverflow.com/questions/11995318/how-do-i-bind-to-relativesource-self). – AAAA

risposta

202

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


Elaborare: Un legame ha un fonte e un percorso. È possibile fare un "legame a se stesso", ad esempio, utilizzando

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

Questo, tuttavia, imposta il fonte al controllo di sé, quindi si cercherà di accedere alla proprietà x del controllo dell'interfaccia utente (piuttosto della proprietà x del contesto dati attuale). Da come ho capito la tua domanda, questo non è quello che vuoi; in particolare, non è quello che {Binding} fa: {Binding} mantiene la sorgente così com'è (di solito lo DataContext di qualche elemento padre) e si collega alla sorgente stessa (equivalente a Path=.).

+1

Grazie mille! – Snake

+1

Buona risposta, ti darei +2 se potessi. –

+0

Che bella risposta! –