ho una finestra principale con un controllo scheda contenente 2 tabItem
s:MVVM WPF: associare un ViewModel diverso a ciascun TabItem?
Al momento ho 1 ViewModel
quali servizi Tab1 & Tab2. Questo ViewModel
sta diventando un po 'gonfio con SOC sfocato. Voglio dividere la logica in 2 viewmodels: ViewModel 1 & ViewModel2. La mia comprensione è che è possibile impostare la Finestra principale DataContext
su un Base ViewModel che contiene una collezione di ViewModels &, quindi è possibile dichiarare ogni TabItem su un ViewModel diverso.
del esempio che ho visto di questi ViewModels di base esporre un ObservableCollection in questo modo:
private ObservableCollection<ViewModel1> _viewModelCollection
Public Observable Collection<ViewModel1> ViewModelCollection
{
get { return _viewModelCollection; }
set
{
_viewModelCollection = value;
OnPropertyChanged("ViewModelCollection");
}
}
public BaseViewModel()
{
ViewModelCollection = new ObservableCollection<ViewModel1>();
ViewModelCollection.Add(new ViewModel1(Tab1);
ViewModelCollection.Add(new ViewModel1(Tab2);
}
Ma come faccio assegnare un ViewModel diverso per ogni TabItem? Vorrei Tab1 = ViewModel1 & Tab2 = ViewModel2?
Non sono sicuro che ci sia una best practice definitiva per questo. Non ti fa molto bene associare il 'ItemsSource' di' TabControl' al tuo 'ViewModelCollection', in quanto non esiste un 'template' comune (ogni tab ha presumibilmente la sua vista). Se hai un numero fisso di schede, legherei semplicemente "DataContext" di ciascuna scheda al modello di visualizzazione corrispondente e imposti il contenuto di ogni scheda alla vista appropriata. Se le schede sono dinamiche, le cose diventano più complicate. –
Hai provato a cercare? [1] (http://stackoverflow.com/q/14009074/1997232), [2] (http://stackoverflow.com/q/12432062/1997232), [3] (http://stackoverflow.com/ q/17952321/1997232) ... – Sinatr
@Sinatr sì, ho letto quelle domande. Voglio associare a ViewModels diversi non una raccolta di istanze di differenze dello stesso ViewModel ... – Hardgraf