Come organizzare i file MVVM in soluzione

7

Sono abbastanza nuovo per il concetto MVVM ma come molta della flessibilità che mi dà finora. Tuttavia, sto lottando per trovare un buon modo per gestire il mio codice. Ho diverse classi che sono solo in una cartella nella mia soluzione come xxxView.cs , xxxViewModel.cs , yyyView.cs , yyyViewModel.cs , zzzView.cs , zzzViewModel.cs si ottiene l'idea. Ha iniziato ad affollare la mia soluzione, rendendo più difficile trovare i file che sto cercando. C'è un modo standard per organizzare questi file? Creo una cartella Visualizza e ViewModel per separare e ripulire la soluzione o fare in modo che le persone trovino un modo migliore?

    
posta lumberjack4 08.01.2013 - 22:40
fonte

4 risposte

3

Utilizziamo progetti separati per

  • Visualizza
  • ViewModel
  • Modello

E all'interno di questi progetti, aggiungeremo potenzialmente delle cartelle per fornire una struttura aggiuntiva.

Il progetto View fa riferimento a ViewModel e il progetto ViewModel fa riferimento al Modello.

Le immagini spesso ricevono la propria cartella. Finora, i dizionari delle risorse, i convertitori e gli oggetti estesi sono stati collocati nella cartella principale del progetto per il livello.

Un'alternativa è avere "aree di applicazione principali" come progetti. Quindi è necessario avere cartelle V / VM / M all'interno di ciascuna area o semplicemente inserire i relativi file MVVM nella cartella del progetto area.

Non mi piace tanto questo approccio dal momento che dovrò spesso lavorare su più viste alla volta, così finirò la navigazione su una struttura di progetto molto più ampia di quella che vorrei.

Questo tipo di approccio si riutilizza quando si tratta di dizionari di risorse o simili. Il cross-referencing dei progetti può diventare difficile da mantenere. Tuttavia, la creazione di un progetto dedicato "risorsa comune" sarebbe un approccio per alleviare questo problema.

    
risposta data 08.01.2013 - 22:52
fonte
1

Se non vuoi progetti separati, almeno separa le diverse parti con cartelle di progetto e spazi dei nomi.

Io uso un modello diverso. Tengo la vista correlata, il modello di vista e il modello nello stesso assembly, separati da namespace. Ogni nuova relazione crea un nuovo assembly.

    
risposta data 09.01.2013 - 23:55
fonte
1

In un progetto abbiamo avuto più o meno 60 "schermate" con un sacco di nidificazione e nomi simili.

Organizzarlo nelle cartelle Views, ViewModels e Controllers era piuttosto difficile da lavorare, dal momento che l'intera struttura nidificata della cartella era replicata su tutte e 3 le cartelle principali e passando dal modello di vista alla sua vista e ritorno era un problema.

Continuo a pensare che sarebbe un'organizzazione più constrongvole a lavorare tenendo insieme i file che appartengono alla stessa schermata o area funzionale, come:

  • Sezione A
    • Sezione A 1
      • ISectionA1ViewModel.cs
      • SectionA1ViewModel.cs
      • SectionA1View.xaml
      • SectionA1View.xaml.cs
      • SectionA1Controller.cs
    • Sezione A 2
      • ISectionA1ViewModel.cs
      • SectionA2ViewModel.cs
      • SectionA2View.xaml
      • SectionA2View.xaml.cs
      • SectionA2Controller.cs
  • Sezione B
    • ISectionBViewModel.cs
    • SectionBViewModel.cs
    • SectionBView.xaml
    • SectionBView.xaml.cs
    • SectionBController.cs

Principalmente perché, in quel progetto (e in alcuni altri con cui ho lavorato), quelle cose sono abbastanza statiche. Eseguirai solo piccoli cambiamenti. E nel caso di un refactoring enorme, è più facile spostarsi da un file all'altro, è possibile vederli insieme in Solution Explorer, il che lo rende molto intuitivo.

Inoltre, se hai l'opzione Traccia attivata in Visual Studio, non ti farà impazzire a navigare su e giù molto spesso.

    
risposta data 08.07.2013 - 17:13
fonte
1

Ho separato la mia soluzione in 8 progetti:

  • Convertitori
  • Helpers
  • Models.Business
  • Models.DataContext
  • Models.Entities
  • Avvio
  • ViewModels
  • Vista

Ho dovuto creare il progetto di avvio solo per ospitare App.xaml (e App.xaml.cs). Altrimenti, avevo un problema di riferimento circolare.

Ho lavorato con questo formato ed è ben pratico e funzionale.

Nel prossimo passaggio creerò progetti di test per ogni livello.

    
risposta data 21.06.2016 - 19:04
fonte

Leggi altre domande sui tag