В моем главном окне у меня есть TabControl
, ItemSource
которого привязан к ObservableCollection<TabItem>
в его модели представления (vmMainWindow).
В главном окне у меня также есть Menu
с 2 MenuItems
, (Альбомы, Исполнители)
Я создал Page
и ViewModel
для альбомов и исполнителей.
При щелчке по MenuItem
с помощью RelayCommand
я создаю Frame
, чтобы удерживать релевантный Page
привязанным к соответствующей модели представления.Затем я создаю новый TabItem
, устанавливаю Content
на новый Frame
, затем добавляю новый TabItem
к ObservableCollection<TabItem>
.
void MenuItemClick(object parameter)
{
switch (parameter)
{
case "Albums":
Frame albumsFrame = new Frame { Content = new pgAlbums { DataContext = new vmAlbums() } };
TabCollection.Add(new TabItem { Header = "Albums", Content = albumsFrame , IsSelected = true });
break;
case "Artists":
Frame artistsFrame = new Frame { Content = new pgArtists { DataContext = new vmArtists() } };
TabCollection.Add(new TabItem { Header = "Artists", Content = artistsFrame , IsSelected = true });
break;
}
}
То, что я хотел бы сделать, это бытьЯ могу добавлять вкладки в ObservableCollection<TabItem>
так же, как и в других Page
View Models, но у меня нет доступа к TabCollection из них.Мне либо нужно где-то глобальное, чтобы разместить его вместо этого, либо каким-то образом разделить его между View Models.
Я знаю, что все это неправильно, поэтому я выкладываю это здесь, чтобы кто-то мог направить меня вправильное направление о том, что делать.Я новичок в MVVM, у меня есть только опыт работы с Winforms, но я хочу двигаться дальше.