Question

Salut, je voudrais développer ma demande en ayant des unités distinctes de fonctionnalité dans UserControls, puis mettre plusieurs d'entre eux à l'intérieur d'une grille de ContentControls sur ma page principale. Je dois être en mesure de communiquer entre les contrôles dans la grille.

Je me demande, quelle est la meilleure façon pour eux pour échanger des données. L'application est une conception MVVM, chaque Usercontrol ayant son propre ViewModel. Chacun des la propriété principale de ContentControls de formulaire de contenu 'est lié à une propriété dans le viewmodel de la principale forme qui fournit le Usercontrol à afficher dans cette ContentControl.

Par exemple, permet de dire que je veux un navigateur de fichiers amélioré, donc je construis dans un UserControl. Ensuite, j'ai une visionneuse de fichiers dans un autre UserControl. Je voudrais pouvoir les montrer à la fois en même temps dans une grille sur la principale forme. Lorsque je sélectionne un fichier avec le navigateur, je veux que le fichier sélectionné soit disponible à la visionneuse Usercontrol.

J'utilisé cette conception pour que je puisse réutiliser chaque morceau de fonctionnalités partout où j'avais besoin dans l'application. Je ne suis pas clair sur la meilleure façon de transférer des données entre eux, comme dans ma conception, ils ne sont pas au courant de l'autre. Aucun conseil? Merci!

Était-ce utile?

La solution

Utilisez un bus de message. Si vous utilisez le MVVM Lumière Tookit , par exemple, utiliser le en construit la mise en œuvre IMessenger . Sinon, il est relativement facile de rouler votre propre.

Une fois que vous avez un bus de message, vous pouvez enregistrer des messages dans un ViewModel et publier des messages d'un autre. Il est un moyen facile de communiquer (l'un à un ou en mode « broadcast ») à travers ViewModels.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top