Я могу привязываться к собственности, но не к собственности в другой собственности. Почему нет? напримерWPF: Как связать с вложенным свойством?
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"...>
...
<!--Doesn't work-->
<TextBox Text="{Binding Path=ParentProperty.ChildProperty,Mode=TwoWay}"
Width="30"/>
(Примечание.. Я не пытаюсь сделать мастер-деталь или что-либо Оба свойствами являются стандартными свойствами CLR)
Update: проблема заключалась в том, что мой ParentProperty зависит от объекта в XAML времени инициализируется. К сожалению, этот объект был определен позже в файле XAML, чем Binding, поэтому объект был null в то время, когда мой ParentProperty был прочитан Binding. Поскольку переставляя файл XAML бы ввернуть макет, единственное решение, которое я мог думать только о том, чтобы определить Binding в коде-за:
<TextBox x:Name="txt" Width="30"/>
// after calling InitializeComponent()
txt.SetBinding(TextBox.TextProperty, "ParentProperty.ChildProperty");
Да, это похоже на причину. ParentProperty доступен только для чтения, но зависит от определенного элемента управления в XAML, который инициализируется. Этот объект определен в файле .xaml ПОСЛЕ привязки, поэтому при вызове ParentProperty он выбрал исключение NullReferenceException. Я не заметил, потому что WPF проглотил его. Я должен был проверить окно вывода! – Qwertie
Теперь у меня есть новая головоломка - как определить объекты в правильном порядке в XAML, не испортив макет. – Qwertie
Или я могу каким-то образом привязать привязку до тех пор, пока окно не будет полностью инициализировано, прежде чем он прочитает свойство? Когда я использую {Binding ElementName = xyz, ...}, он работает, даже если xyz определяется позже в файле XAML. Странно, что мой ParentProperty (который использует элемент xyz) не работает только потому, что xyz определяется позже в файле XAML. – Qwertie