MVVM charger des données pendant ou après le ViewModel de la construction?

Ma question générique est que le titre, est-il préférable de charger des données au cours de ViewModel de la construction ou par la suite par quelques Chargé de la gestion des événements?

Je devine la réponse est après la construction en passant par quelques Chargé de la gestion des événements, mais je me demandais comment qui est le plus proprement coordonnée entre ViewModel et les Afficher?

Voici plus de détails sur ma situation et du problème particulier, je suis en train de résoudre:

Je suis en utilisant le framework MVVM Light ainsi que l'Unité de DI. J'ai quelques Vues imbriquées, chacune reliée à un correspondant ViewModel. Le Viewmodel sont liés à chaque Affichage de la racine de contrôle DataContext via le ViewModelLocator idée que Laurent Bugnion a mis en MVVM Light. Cela permet de trouver des ViewModels via une ressource statique et pour le contrôle de la durée de vie des ViewModels via une Injection de Dépendance cadre, dans ce cas l'Unité. Il permet aussi l'Expression Blend pour tout voir en ce qui concerne Viewmodel et comment les lier.

De toute façon, j'ai un parent qui a un ComboBox lié aux données à une ObservableCollection dans son ViewModel. La zone de liste déroulante du SelectedItem est aussi lié dans les deux sens) à une propriété du ViewModel. Lors de la sélection de la zone de liste déroulante des changements, c'est pour déclencher les mises à jour dans d'autres points de vue et des sous-vues. Actuellement, je suis à l'accomplissement de cette via le système de Messagerie qui se trouve dans MVVM Light. C'est tout fonctionne très bien et comme prévu lorsque vous choisissez les différents éléments dans la zone de liste déroulante.

Cependant, le ViewModel est d'obtenir ses données pendant le temps de construction par l'intermédiaire d'une série d'initialisation des appels de méthode. Cela semble être la seule à être un problème si je veux contrôler ce que l'initiale SelectedItem de la zone de liste déroulante est. En utilisant MVVM Light le système de messagerie d', j'ai actuellement mis en place où le setter de la ViewModel de la propriété SelectedItem est une radiodiffusion de la mise à jour et d'autres parties intéressées, Viewmodel enregistrer le message dans leurs constructeurs. Il semble que je suis en train d'essayer de régler le SelectedItem via le ViewModel au moment de la construction, qui n'a pas le droit de sous-Viewmodel être construit et s'inscrire encore.

Quelle serait la façon la plus propre de coordonner les données de charge et de réglage initial de SelectedItem dans le ViewModel? J'ai vraiment envie de coller avec de la en mettant que peu de choses dans la Vue de code-behind du raisonnable. Je pense que j'ai juste besoin d'un moyen pour le ViewModel de savoir quand des trucs a Chargé et qu'il peut alors continuer à charger les données et de finaliser la phase d'installation.

Merci d'avance pour vos réponses.

  • Ne pouvez-vous pas d'avoir votre événement Chargé d'appeler une méthode sur le viewmodel?
  • Oui, j'ai supposé que je pouvais. Je suis probablement plus de la pensée. Je suppose que mon hésitation est que j'ai été en mesure de lier le tout jusqu'à présent de façon déclarative dans le XAML. J'ai mis le DataContext et puis définissez les membres de toutes les liaisons dans un seul endroit. Est-il un moyen propre à cette fonction en XAML avec le contrôle du Chargé événement lié à un ViewModel méthode? Bien sûr, je ne pense pas que ce Dernier doit avoir de l'INTERFACE utilisateur spécifiques à la gestion des événements des paramètres de quoique ce soit.
InformationsquelleAutor mkmurray | 2010-03-28