Lier à l'Objet Parent de la Propriété avec RelativeSource
J'ai construit un WPF en fonction Treeview avec
Élément
-Point
Si le Point est sélectionné, je voudrais afficher également les Propriétés de l'Élément.
<StackPanel Grid.Column="2" DataContext="{Binding ElementName=myTreeView, Path=SelectedItem}">
<TextBox Text="{Binding Path=Name, Mode=TwoWay}" />
<TextBox Text="{Binding RelativeSource={???} Path=Name, Mode=TwoWay}" />
</StackPanel>
Je suppose que j'ai besoin d'utiliser un RelativeSource déclaration, mais pas tout à fait sûr de savoir comment le faire.
- quel est le type de contrôle qui est censé être la source de la liaison?
- C'est un Treeview, donc je suppose qu'il serait TreeViewItem.
- Pouvez-vous fournir le code XAML pour votre TreeView et de son contenu?
Vous devez vous connecter pour publier un commentaire.
JesseJames vous a donné la bonne façon d'utiliser les RelativeSource mais le mieux vous serez en mesure de le faire avec RelativeSource est lier à la TreeViewItem lui-même, qui n'est que le conteneur de vos données objet que j'.e ViewModel, ce qui signifie que vous ne serez pas en mesure d'accéder à vos données de propriétés des objets(facilement).
Je pense que dans ce cas la liaison à l'objet conteneur serait briser le View-ViewModel approche que vous utilisez. Votre meilleur pari serait de créer un objet Parent au sein de votre ViewModel et les lier à l'objet. De sorte que chaque objet dans votre collection a une référence à celle du parent qui peut maintenant être lié directement.
Également de noter que la propriété SelectedItem les retours de vos données objet et non pas le contenant.
AncestorType={x:Type TreeViewItem}
J'ai regardé ton code, essayez simplement de liaison à
Name
. Il semble que votre contexte de données devrait déjà être réglé à laTreeViewItem
dû à la ligne suivante:<StackPanel Grid.Column="2" DataContext="{Binding ElementName=myTreeView, Path=SelectedItem}">
. LeRelativeResource
de liaison est probablement à la recherche plus haut dans l'arborescence logique, et c'est pourquoi votre liaison est un échec.