Posso associare a una proprietà, ma non una proprietà all'interno di un'altra proprietà. Perchè no? per esempio.WPF: come associare a una proprietà nidificata?
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"...>
...
<!--Doesn't work-->
<TextBox Text="{Binding Path=ParentProperty.ChildProperty,Mode=TwoWay}"
Width="30"/>
(Nota:.. Io non sto cercando di fare master-dettagli o nulla Entrambe le proprietà sono proprietà CLR normali)
Update: il problema era che la mia ParentProperty dipendeva da un oggetto in XAML essere inizializzato. Sfortunatamente quell'oggetto è stato definito successivamente nel file XAML rispetto al Binding, quindi l'oggetto era nullo nel momento in cui il mio ParentProperty veniva letto dal Binding. Dal momento che riorganizzare il file XAML sarebbe rovinare il layout, l'unica soluzione mi veniva in mente è stato quello di definire il Legatura in code-behind:
<TextBox x:Name="txt" Width="30"/>
// after calling InitializeComponent()
txt.SetBinding(TextBox.TextProperty, "ParentProperty.ChildProperty");
Sì, sembra essere la ragione. ParentProperty è di sola lettura ma dipende da un determinato controllo in XAML che viene inizializzato. Questo oggetto è definito nel file .xaml DOPO il Binding, quindi quando ParentProperty è stato chiamato, ha lanciato NullReferenceException. Non l'ho notato perché WPF lo ha inghiottito. Avrei dovuto controllare la finestra di output! – Qwertie
Ora ho un nuovo enigma: come definire gli oggetti nell'ordine corretto in XAML senza rovinare il layout. – Qwertie
Oppure posso in qualche modo rendere attivo il Binding fino a quando la Finestra non è completamente inizializzata prima di leggere la proprietà? Quando uso {Binding ElementName = xyz, ...}, funziona anche se xyz viene definito successivamente nel file XAML. Strano quindi che la mia ParentProperty (che usa l'elemento xyz) non funzioni solo perché xyz viene definito successivamente nel file XAML. – Qwertie