Скорее всего, это можно сделать несколькими способами, и все они обсуждают, насколько они «дружественны к MVVM».
Моя настройка выглядит следующим образом.
Мое главное окно имеет DataContext, привязанный к MainWindowViewModel, который содержит свойство
public ObservableCollection<Workspace> WorkspaceCollection{get;set;}
MainWindow имеет TabControl
, который ItemsSource
связан с WorkspaceCollection
Все рабочие области являются моделями представления и привязаны к различным представлениям / пользовательским элементам управления через шаблоны данных