2011-03-18 2 views
1

J'ai une application WP7 que je crée et je veux qu'un écran de connexion s'affiche si l'utilisateur ne s'est pas encore connecté. J'ai Main.xaml qui a un modèle de vue MainViewModel.cs. Pour les parties de connexion ou d'inscription, je les ai incorporés comme Grid dans Main.xaml, mais je pense que les avoir comme un contrôle d'utilisateur fonctionnerait bien aussi. Les parties de connexion et d'inscription auront leur propre modèle de vue, peut-être le même pour les deux, AccountViewModel.cs, que le Grid ou le contrôle utilisateur a pour valeur DataContext.ViewModel Communication événementielle

Après les signes de l'utilisateur vers le haut ou se connecte, ce qui se produit dans AccountViewModel.cs, quelle est la meilleure façon pour MainViewModel.cs ou Main.xaml savoir qu'il est complet, et il peut commencer le chargement de données, ou faire ce qu'il doit faire? Ma première pensée est d'utiliser le système de messagerie de MVVM Light. Après l'inscription/connexion se produit, diffuser un message qu'il est terminé, et MainViewModel.cs sera enregistré au message et peut agir sur elle.

Y a-t-il une autre façon de laisser Main savoir qu'un événement s'est produit chez son enfant?

Si cela est trop difficile à suivre, je peux ajouter des exemples de code.

Répondre

2

Un système de messagerie, tel que celui de MVVM Light, est un excellent moyen de découpler ce type d'actions et de fournir des notifications de la manière que vous décrivez. Je ne peux pas dire que je préconiserais autre chose vraiment. La bibliothèque Prism fournit un EventAggregator, qui fait la même chose, mais si vous utilisez déjà MVVM Light, tenez-vous-en à cela.

0

Une autre approche consisterait à stocker ce type d'information (IsLoggedIn) dans un "modèle de vue global" tel que SettingsViewModel.Instance par exemple. Pour un viewmodel de la signification globale comme les paramètres, c'est une approche qui fait beaucoup de sens à mon humble avis. Si vous faites en sorte que cette propriété déclenche l'événement PropertyChanged, cela vous permet de modifier dynamiquement l'interface utilisateur lorsque la propriété change et de masquer l'interface de connexion de manière fluide, par exemple.

acclamations, Laurent

Questions connexes