Un anno fa, ho scoperto la tecnologia WPF e ho sviluppato una piccola applicazione , come primo esperimento, per confrontare il contenuto di due diverse directory. Il contenuto di ciascuna directory è mostrato in un DataGrid diverso. A quel tempo, non ho sviluppato l'applicazione utilizzando il pattern MVVM, perché era solo un esperimento, non così buono, ma ha funzionato.
Ora che ho molta più esperienza con WPF e con gli schemi di progettazione, non sono così orgoglioso di quel lavoro, e voglio riscrivere l'applicazione, migliorandola e seguendo il modello MVVM consigliato.
In realtà, ho progettato l'applicazione in questo modo:
- il MainModel, con l'algoritmo comune principale.
- il MainView è la vista unica dell'applicazione con i datagrids in cui posso mostrare i risultati dei miei algoritmi.
- a MainViewModel, che si occuperà di gestire la connessione tra altri due ViewModels, MainModel e MainView.
- One ViewModel per ogni DataGrid. In questo modo, separerò il comportamento e i dati dei due DataGrid.
Il MainModel contiene l'algoritmo principale utilizzato per cercare i file in una determinata directory, come questo:
public class MainModel
{
public MainModel()
{}
public List<Results> GetFiles(string directoryPath)
}
Il MainViewModel istanzia un oggetto per ogni ViewModel (ho un ViewModel per ogni datagrid), usando alcune proprietà per farlo:
public class MainViewModel
{
public MainViewModel()
{
FirstViewModel = new ViewModelDG1();
SecondViewModel = new ViewModelDG2();
}
public ViewModelDG1 FirstViewModel
{get;set;}
public ViewModelDG2 SecondViewModel
{get;set;}
}
Volevo applicare un modello di progettazione per aiutarmi a gestire l'applicazione, come un metodo di fabbrica o Builder o un metodo di template , ma penso che non siano adatti alla mia applicazione per i diversi usi / condizioni di questi modelli di design.
Non sono così sicuro di questo design, non so se questo è l'implementazione corretta del pattern MVVM e se promuove un accoppiamento lento e un'elevata coesione. Puoi aiutarmi nel design? La mia è una corretta implementazione di MVVM? Se no, allora qual è quella corretta? Quali sono le tue opinioni?
Grazie.