/// <summary> /// Opens a new tab with the specific view and view model. /// </summary> /// <param name="title">The tab title.</param> /// <param name="view">The view.</param> /// <param name="viewModel">The view model.</param> /// <param name="autoSelectNewTab">Defines if the created tab should be selected or not.</param> public ShellTabViewModel ShowInNewTab(string title, UserControl view, ViewModelBase viewModel, bool autoSelectNewTab = false) { view.DataContext = viewModel; var shellTabViewModel = new ShellTabViewModel { Pinned = false, Title = title, View = view }; this.appShell.ViewModel.ShellTabs.Add(shellTabViewModel); var awareViewModel = viewModel as IShellViewStateAware; awareViewModel?.ShellViewStateChanged(ShellViewState.Tab); if (autoSelectNewTab) { this.appShell.ViewModel.SelectedTab = shellTabViewModel; } this.RegisterTabCloseable(shellTabViewModel); return(shellTabViewModel); }
public Window ShowTabInNewWindow(ShellTabViewModel shellTab) { this.appShell.ViewModel.ShellTabs.Remove(shellTab); var shellViewPresenter = new ShellViewPresenter() { View = shellTab.View }; var window = new Window { Content = shellViewPresenter, Title = shellTab.Title, MinWidth = 400, MinHeight = 300 }; var awareViewModel = shellTab.View.DataContext as IShellViewStateAware; awareViewModel?.ShellViewStateChanged(ShellViewState.Window); window.Show(); var windowHandle = new WindowInteropHelper(window).Handle; WinApi.SetForegroundWindow(windowHandle); this.RegisterWindowClosable(window, shellTab.View.DataContext as IClosable); this.UnregisterTabCloseable(shellTab); return(window); }
private void UnregisterTabCloseable(ShellTabViewModel shellTab) { var closableView = shellTab.View?.DataContext as IClosable; if (closableView != null) { closableView.ClosingRequest -= this.ClosableViewOnClosingRequest; } }
//private DrawingService drawingService; public ShellTab() { InitializeComponent(); shellTabViewModel = new ShellTabViewModel(); DataContext = shellTabViewModel; txtBoxInput.Focus(); }
public ShellTabViewModel ShowWindowInNewTab(Window window) { var view = (window.Content as ShellViewPresenter)?.View as UserControl; var shellTabViewModel = new ShellTabViewModel { Pinned = false, Title = window.Title, View = view }; this.appShell.ViewModel.ShellTabs.Add(shellTabViewModel); var awareViewModel = view?.DataContext as IShellViewStateAware; awareViewModel?.ShellViewStateChanged(ShellViewState.Tab); this.appShell.ViewModel.SelectedTab = shellTabViewModel; window.Close(); this.RegisterTabCloseable(shellTabViewModel); return(shellTabViewModel); }
public void CloseTab(ShellTabViewModel shellTab) { this.appShell.ViewModel.ShellTabs.Remove(shellTab); }