2010-12-15 80 views
1

Pourriez-vous répondre à une question newbie vraiment frustrant s'il vous plaît ?! J'ai cherché une réponse pendant quelques jours & ont trouvé des réponses à des questions similaires posées, mais rien qui résout exactement mon problème. J'essaie de lier une zone de texte à l'élément actuellement sélectionné dans un listview (qui lui-même est lié à une collection Observable d'objets, pas sûr si cela compte).WPF - comment lier à la source dans une autre page?

La liste image se trouve dans la zone de texte RecentEntities.xaml & est en Relationship.xaml, qui sont tous deux positionnés sur la fenêtre principale de l'intérieur Maincontrol.xaml. Donc, ils sont dans le même espace de noms, mais ils sont dans des pages différentes, donc l'utilisation de ElementName ne fonctionne pas car cela semble juste dans la page en cours. Le problème que je rencontre est lorsque vous essayez de définir la source de la liaison de la zone de texte dans Relationship.xaml, comment puis-je référencer l'élément listview sélectionné dans RecentEntities.xaml? Je me suis posé la question de l'utilisation de RelativeSource, mais cela ne semble vous permettre que de remonter l'arbre vers un ancêtre du contrôle actuel. En raison de la configuration de MainControl, je devrais aller jusqu'au parent de la zone de texte, puis à un frère du parent puis à un enfant d'un enfant pour accéder à la liste! J'ai exploré (peut-être pas suffisamment) d'autres options comme les ressources, le contexte des données, y compris les fichiers d'en-tête et j'ai lu quelque chose à propos des Dictionnaires de ressources fusionnées mais honnêtement, plus je explore, plus je suis confus. obtenir ce que je dois faire.

Est-ce vraiment aussi compliqué que ça en a l'air? Tout pointeur ou aide serait génial, merci d'avoir pris le temps de répondre :) Je n'ai pas posté sur ici avant, donc si vous avez besoin d'extraits de code s'il vous plaît faites le moi savoir.

Répondre

2

Pouvez-vous créer un ViewModel que les deux vues utiliseront? Avoir l'élément sélectionné dans votre listview lié à une propriété dans le ViewModel et avoir la zone de texte liée à la même propriété. Tant que les deux vues font référence à la même instance du viewmodel, cela devrait fonctionner.

0

Avec deux fichiers XAML, vous devrez utiliser le modèle ou viewmodel (en fonction de votre choix d'architecture) pour la synchronisation.

Pour la liste, vous pouvez utiliser le SelectedValue pour lier à une propriété, utilisez Mode=OneWayToSource pour cette liaison puisque vous voulez juste mettre à jour la propriété, ne pas modifier la sélection dans la liste elle-même.

+0

Merci beaucoup pour les réponses! Je ne connaissais rien à l'approche de Viewmodel, mais après avoir examiné un peu, cela semble être le moyen de réaliser ce dont j'ai besoin. Maintenant, le travail consiste à comprendre comment adapter tout le code dans ce modèle! Merci encore, vous avez tous deux été extrêmement utile. – iambic77