Je peux lier à une propriété, mais pas à une propriété dans une autre propriété. Pourquoi pas? par exemple.WPF: Comment lier à une propriété imbriquée?
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"...>
...
<!--Doesn't work-->
<TextBox Text="{Binding Path=ParentProperty.ChildProperty,Mode=TwoWay}"
Width="30"/>
(Note:.. Je ne cherche pas à faire maître-détails ou quoi que ce soit deux propriétés sont des propriétés CLR standards)
Mise à jour: le problème était que mon parentProperty dépendait d'un objet en XAML étant initialisé. Malheureusement cet objet a été défini plus tard dans le fichier XAML que la liaison, donc l'objet était nul au moment où mon ParentProperty a été lu par la liaison. Depuis réorganisant le fichier XAML visserait la mise en page, la seule solution que je pouvais penser était de définir la liaison dans le code-behind:
<TextBox x:Name="txt" Width="30"/>
// after calling InitializeComponent()
txt.SetBinding(TextBox.TextProperty, "ParentProperty.ChildProperty");
Oui, cela semble être la raison. ParentProperty est en lecture seule mais dépend d'un certain contrôle dans XAML en cours d'initialisation. Cet objet est défini dans le fichier .xaml APRÈS la liaison, alors quand ParentProperty a été appelé, il a jeté NullReferenceException. Je n'ai pas remarqué parce que WPF l'a avalé. J'aurais dû vérifier la fenêtre de sortie! – Qwertie
Maintenant, j'ai un nouveau puzzle - comment définir les objets dans le bon ordre dans XAML sans gâcher la mise en page. – Qwertie
Ou puis-je faire en sorte que la liaison attende que la fenêtre soit entièrement initialisée avant de lire la propriété? Lorsque j'utilise {Binding ElementName = xyz, ...}, cela fonctionne même si xyz est défini plus tard dans le fichier XAML. Étrange alors que mon ParentProperty (qui utilise l'élément xyz) ne fonctionne pas simplement parce que xyz est défini plus tard dans le fichier XAML. – Qwertie