Puedo vincularme a una propiedad, pero no a una propiedad dentro de otra. Por qué no? p.ej.WPF: ¿Cómo enlazar a una propiedad anidada?
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"...>
...
<!--Doesn't work-->
<TextBox Text="{Binding Path=ParentProperty.ChildProperty,Mode=TwoWay}"
Width="30"/>
(Nota:.. No estoy tratando de hacer magistrales detalles o nada Ambas propiedades son propiedades estándar CLR)
Actualización: el problema es que mi ParentProperty dependía de un objeto en XAML siendo inicializado Lamentablemente, ese objeto se definió más tarde en el archivo XAML que en el Enlace, por lo que el objeto era nulo en el momento en que mi ParentProperty fue leído por el Enlace. Desde reordenar el archivo XAML sería arruinar el diseño, la única solución que se me ocurrió fue definir la unión de código subyacente:
<TextBox x:Name="txt" Width="30"/>
// after calling InitializeComponent()
txt.SetBinding(TextBox.TextProperty, "ParentProperty.ChildProperty");
Sí, parece ser una especie de razón. ParentProperty es de solo lectura, pero depende de un control determinado en XAML que se está inicializando. Este objeto se define en el archivo .xaml DESPUÉS de la vinculación, por lo que cuando se llamó a ParentProperty, arrojó NullReferenceException. No me di cuenta porque WPF se lo tragó. Debería haber revisado la ventana de salida! – Qwertie
Ahora tengo un nuevo rompecabezas: cómo definir los objetos en el orden correcto en XAML sin estropear el diseño. – Qwertie
¿O puedo de alguna manera hacer que la vinculación espere hasta que la ventana esté completamente inicializada antes de leer la propiedad? Cuando uso {Binding ElementName = xyz, ...}, funciona incluso si xyz se define más adelante en el archivo XAML. Es extraño entonces que mi ParentProperty (que usa el elemento xyz) no funcione solo porque xyz se define más adelante en el archivo XAML. – Qwertie