2011-03-02 4 views
0

Je travaille sur un projet et j'apprends SL/MVVM au fur et à mesure. J'utilise la lumière MVVM et j'ai l'impression d'avoir une bonne compréhension des choses. Je comprends les contrôles de liaison à la machine virtuelle et envoie également des événements/commandes à la machine virtuelle.Silverlight MVVM question

Quelques questions que j'ai:

Dans une application MVVM comment est l'objet Application accessible depuis la machine virtuelle, pour appeler Application.Install ou le contrôle état d'installation? Ou est-ce que vous le collez simplement dans le code derrière une vue pour cette affaire? Je suppose que cela pourrait être fait par la messagerie MVVM, mais vous auriez toujours enregistrer un écouteur dans le code derrière. Je ne sais pas si cela peut arriver mais comment, à partir de la machine virtuelle, comment accéder à une méthode à partir d'une Vue/Contrôle pour faire quelque chose qui ne peut pas être accompli par liaison de données ou commande/événement? Est-ce là que les objets/propriétés de dépendance entrent en jeu?

Répondre

1

L'application doit fournir un service permettant d'obtenir les informations relatives au singleton Application; comme avec toutes les données qui pourraient être utilisées tout au long de l'application; le vôtre ou les cadres.

Si vous jamais avoir besoin d'accéder à une méthode sur un UIElement/FrameworkElement/Control du ViewModel qui serait le point de regarder dans une coutume Control ou UserControl pour fournir le comportement nécessaire. Cela est généralement résolu via Triggers et Behaviors.

+0

L'application fournit-elle un service généralement implémenté via la messagerie? Je pourrais voir l'enregistrement et le traitement des messages dans l'objet Application pour des choses telles que Application.Install. –

+0

@DerekBeattie Si vous avez l'application séparée en différents projets/modules distincts; alors oui un cadre de messagerie pourrait être utilisé. Si vous utilisiez un cadre IoC/DI, vous pourriez injecter le service dans la classe qui se soucie de l'utilisation de ce service. Sous les couvertures, ce service peut être enregistré avec le conteneur de choix pour se comporter comme un singleton ... ce qui vous permet d'ajouter des fonctionnalités au service IApplicationService ou de tirer parti du singleton Application. –