Mogę powiązać z nieruchomością, ale nie jest własnością w innej nieruchomości. Dlaczego nie? na przykładWPF: jak powiązać z właściwością zagnieżdżoną?
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"...>
...
<!--Doesn't work-->
<TextBox Text="{Binding Path=ParentProperty.ChildProperty,Mode=TwoWay}"
Width="30"/>
(Uwaga:.. Nie próbuję robić mistrzowskie szczegółów ani niczego Obie właściwości są standardowe właściwości CLR)
Aktualizacja: Problemem było to, że mój ParentProperty zależało na obiekcie w XAML bycia zainicjowany. Niestety ten obiekt został zdefiniowany później w pliku XAML niż powiązanie, więc obiekt był zerowy w momencie, gdy moja ParentProperty została odczytana przez powiązanie. Od rozmieszczanie plik XAML byłoby zepsuć układ, jedynym rozwiązaniem mogłem pomyśleć było określenie wiąże w opóźnieniem kodu:
<TextBox x:Name="txt" Width="30"/>
// after calling InitializeComponent()
txt.SetBinding(TextBox.TextProperty, "ParentProperty.ChildProperty");
Tak, to wydaje się być jakby powodem. ParentProperty jest tylko do odczytu, ale zależy od pewnej kontroli podczas inicjowania XAML. Ten obiekt jest zdefiniowany w pliku .xaml PO Powiązaniu, więc gdy wywołano ParentProperty, zarzucono wyjątek NullReferenceException. Nie zauważyłem, ponieważ WPF ją połknęła. Powinienem był sprawdzić okno wyjściowe! – Qwertie
Teraz mam nową zagadkę - jak zdefiniować obiekty w odpowiedniej kolejności w XAML bez zmyślania układu. – Qwertie
Czy mogę w jakiś sposób sprawić, aby wiązanie czekało, aż okno zostanie w pełni zainicjowane, zanim odczyta właściwość? Kiedy używam {Binding ElementName = xyz, ...}, działa to nawet wtedy, gdy xyz jest zdefiniowany później w pliku XAML. Dziwne, że moja ParentProperty (która używa elementu xyz) nie działa tylko dlatego, że xyz jest zdefiniowany później w pliku XAML. – Qwertie