Un View
può essere un UserControl
o un DataTemplate
. Un UserControl
potrebbe essere un View
, tuttavia è sempre un Control
personalizzato. Non c'è davvero alcuna relazione tra i due.
Quindi inserisco gli UserControls che sono Views nella tua cartella Views, mentre UserControls sono controlli personalizzati nelle tue cartelle UserControl.
E personalmente, non vorrei ordinare un'applicazione MVVM nelle cartelle Model, View e ViewModel. Rende la manutenzione troppo odiosa. Supponiamo di voler aggiungere un campo a un oggetto. Devi dare la caccia a quell'elemento in tutte e 3 le cartelle per fare la modifica. Nelle applicazioni più grandi, questo è molto fastidioso.
Invece suggerirei di raggruppare gli oggetti in base alla loro funzionalità. Ad esempio, posizionerei CustomerView, CustomerViewModel e CustomerModel in un'unica cartella denominata Cliente.
Nelle applicazioni più grandi, separerò i layer MVVM in librerie separate, tuttavia lo stesso concetto si applica ancora. Il progetto che contiene i miei dati memorizzerà tutti i modelli del cliente in una cartella denominata Cliente, il mio progetto che mantiene la mia logica aziendale memorizzerà tutti i ViewModels del cliente in una cartella denominata Cliente e il mio livello dell'interfaccia utente memorizzerà tutte le viste relative al cliente (UserControls e / o ResourceDictionaries w / DataTemplates) in una singola cartella denominata Cliente.