Ora sto andando oltre un semplice programma MVVM, e vorrei solo controllare la mia architettura corrente e assicurarmi che stia andando giù per il percorso giusto qui.
Tutto è strutturato attorno a schermi, e questi schermi hanno una sorta di scomposizione "ad albero". Al livello superiore c'è una schermata principale e puoi eseguire il drill down attraverso le schermate correlate.
Ho fatto un esempio semplificato, un'applicazione che tiene traccia dei dipendenti per le aziende. Ha tre "schermi".
- CompanyOverviewScreen, ti consente di vedere tutte le società che hai. Clicca per andare al seguente:
- EmployeeTrackerScreen, ti consente di vedere tutti i dipendenti di questa azienda e la loro posizione. Clicca per andare al seguente:
- EmployeeScreen, vediamo le informazioni su un impiegato.
Quindi gli schermi si aprono come un albero:
Domanda1:dovedovrebberoesserecreatiearchiviatiquestimodellidivisualizzazionedelloschermo?Dovrebberoesserecreatiearchiviatiinunpostosopratutto,oilEmployeeTrackerScreenViewModelpuòcreareEmployeeScreenViewModelearchiviarlocomeunaproprietàdiraccolta?
StoancheutilizzandoViewModelscondivisichenonhannovisteperidatieleproprietàdell'interfacciautenteinquesteschermateincuistannovisualizzandounaraccoltadielementi.Adesempio,EmployeeTrackerScreenViewhaunItemsCollectionpercollegarsidirettamenteaunaObservableCollectionchesonoarchiviaticomeproprietàinEmployeeTrackerScreenViewModel.
Eccounbreveschizzodicomeèstrutturato:
<UserControlx:Class="Project.EmployeeTrackerScreenView >
<DockPanel>
<StackPanel DockPanel.Dock="Top">
<Label Content="{Binding CorporationViweModel.Name}" />
<Label Content=" has " />
<Label Content="{Binding CorporationViweModel.NumberOfEmployees}" />
</StackPanel>
<ScrollViewer>
<ItemsControl ItemsSource="{Binding ObsvCollectionOfEmployeeViewModels}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding EmployeeModel.Name}"/>
<Label Content="is"/>
<Label Content="{Binding EmployeeModel.Location}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</DockPanel>
</UserControl>
Domanda 2 è in linea con i pattern MVVM? Sto andando nel modo giusto?
Mi piacerebbe qualche commento su come sto strutturando le cose, forse qualche consiglio sul fatto che ne parlerò in modo ragionevole. Spero che la domanda fornisca informazioni sufficienti ed è appropriata. Sono nuovo di questo tipo di progettazione software, ho sempre creato app più piccole in passato, quindi sono inesperto nell'architettura appropriata.
Utilizzo il framework Caliburn Micro MVVM, in WPF se è utile saperlo.