public void OpenTab(Control control, string header, object tag, object dataContext) { if (tag == null) { throw new ArgumentNullException("tag"); } TabItem tabItem = GetTabFor(tag); if (tabItem == null) { tabItem = new TabItem(); tabItem.Header = header; tabItem.Tag = tag; tabItem.DataContext = dataContext; tabItem.Content = control; tabItem.IsSelected = true; OpenTabItems.Add(tabItem); if (dataContext is BaseViewModel) { ((BaseViewModel)dataContext).CloseRequested += TabControlViewModel_CloseRequested; } } SelectedTabItem = tabItem; }
internal void SelectTab(BaseViewModel viewModel) { if (IsOpen(viewModel)) { SelectedTabItem = OpenTabItems.First(i => i.DataContext == viewModel); } }
void TabControlViewModel_CloseRequested(object sender, CloseEventHandlerArgs args) { BaseViewModel viewModel = sender as BaseViewModel; OpenTabItems.Remove(GetTabFor(viewModel)); }