2010-08-30 14 views
3

Salut, je suis assez nouveau pour WPF. J'aime le modèle MVVM (Model-View-ViewModel). Mon projet actuel a le type de structure de fichier/espace de noms suivant:Quelle est la structure de projet d'application WPF recommandée?

Clients 
    Controls 
     ClientNameControl.xaml 
     ClientSurnameControl.xaml 
    Views 
     ClientCapture.xaml 
    Models 
     Client.cs 
    ViewModels 
     ClientViewModel.cs 

Et ainsi de suite. Avec chaque objet de domaine comme les clients, les produits etc. ayant chacun la structure ci-dessus. Les contrôles sont utilisés pour composer des vues, les contrôles très génériques sont divisés en projets de contrôle distincts et référencés dans le projet. Ma question est de savoir si c'est une structure utile? Tous les exemples de MVVM semblent suivre l'approche suivante de la hiérarchie des fichiers/espaces de noms:

ViewModels 
    ClientViewModel.cs 
    ProductViewModel.cs 
    Models 
    Clients.cs 
    Products.cs 
    Views 
    CliewntView 
    ProductView 

Tous les commentaires seraient appréciés. Merci d'avance :)

MISE À JOUR: J'ai regardé autour et les liens ci-dessous ont fourni des informations utiles. Je vais structurer mon projet de manière plus traditionnelle.

+2

Je pense que ce post pourrait être fermé pour être subjectif. Il n'y a pas de vraie réponse à cette question. Je pense que votre structure peut être utile si cela fonctionne pour vous. Vous pourriez avoir des ennuis si une situation survient où vous avez un control/view/viewmodel qui ne correspond pas à un objet de domaine particulier. – Peter

Répondre

2

Nous avons créé différents projets pour les modèles View et View. Cela rend les choses plus faciles à maintenir en cas d'énormes projets. Annuaires que nous avions étaient -

- ViewsRoot 
    + Base 
    + Controls 
    + Documentation 
    + Forms(Windows) 
    + Reports 
    + Resources 
    + Themes 
    + Utilities 
    App.xaml 

- ViewModelsRoot 
    + Collection 
    + Commands 
    + Converters 
    + Resources 
    + TemplateSelectors 
    + ViewModels 
    + Views (Interfaces for views) 
    Constants.cs 
    Utility.cs 

ont également un coup d'œil à cette question SO pour un peu plus d'informations. lié à des structures de projet WPF - Recommended WPF Project Structure?

+0

Je sais, c'est une vieille question, mais pourquoi avez-vous besoin de Views dans ViewModelsRoot? Généralement (si vous utilisez MVVM), vous liez la machine virtuelle en tant que datacontext à la vue. Donc, la VM n'a pas besoin de savoir quoi que ce soit sur le View ?! – basti

+0

@chiffre Ceci est utilisé dans le cas où vous voulez avoir un moyen d'appeler du code dans votre vue (UI spécifique qui ne peut être fait dans VM); vous ne pouvez pas l'appeler MVVM parfait mais dans certains cas cela fonctionne. Si je me souviens bien, nous l'avons utilisé pour afficher les messages (erreur/avertissement/info) à l'utilisateur en utilisant un messageBox personnalisé (seulement ViewsRoot) avait référence de cela. – akjoshi

+0

Bien que je n'ai pas utilisé cette approche après cela, cela a bien fonctionné à ce moment-là; un article connexe de cette époque - http://stackoverflow.com/questions/3670629/should-a-viewmodel-in-mvvm-reference-the-view?rq=1 – akjoshi