private void AddOrSelectDocumentButton(string filePath) { ISelectableButtonViewModel button; if (!_buttonLookup.TryGetValue(filePath, out button)) { var vm = new Lazy <DocumentViewModel>(() => NewVm( new DocumentViewModel( filePath, (oldPath, newPath) => { _buttonLookup.Remove(oldPath); _buttonLookup[newPath] = button; filePath = newPath; } ) )); var cmd = new RelayCommand(x => TopPanelContent.Value = vm.Value); var closeCmd = new RelayCommand(x => { if (_currentViewModels.Count(y => y is DocumentViewModel) == 1) { NewDocument(); } CloseTopTab(filePath, vm.Value, vm.Value.Close); }); _buttonLookup[filePath] = button = new FileTabButtonViewModel(cmd, closeCmd, vm.Value); TopTabs.Add(button); } button.IsSelected.Value = true; }
private void AddOrSelectTopPanelButton(string text, Func <ViewModelBase> vmGenerator) { ISelectableButtonViewModel button; if (!_buttonLookup.TryGetValue(text, out button)) { var vm = new Lazy <ViewModelBase>(() => NewVm(vmGenerator())); var cmd = new RelayCommand(x => TopPanelContent.Value = vm.Value); var closeCmd = new RelayCommand(x => CloseTopTab(text, vm.Value)); _buttonLookup[text] = button = new SelectableCloseableButtonViewModel(text, cmd, closeCmd); TopTabs.Add(button); } button.IsSelected.Value = true; }