public MainMenu(FileMenuViewModel file, EditMenuViewModel edit, ViewMenuViewModel view, HelpMenuViewModel help) { _file = file; _edit = edit; _view = view; _help = help; var allMenuItems = new CompoundObservableCollection <IMenuViewModel>(hasSeparator: false) { file.Items, _edit.Items, view.Items, help.Items }; _keyBindings = new ProjectingObservableCollection <IMenuViewModel, KeyBindingCommand>(allMenuItems, menuItem => menuItem?.Command as KeyBindingCommand); }
public AbstractMainMenuViewModel() { _items = new CompoundObservableCollection <IMenuViewModel>(true); _items.CollectionChanged += ItemsOnCollectionChanged; }
public FileMenuViewModel(ICommand addDataSourceFromFile, ICommand addDataSourceFromFolder, ICommand closeCurrentDataSource, ICommand closeAllDataSources, ICommand showPlugins, ICommand showSettings, ICommand exitCommand) { _newCustomMenuViewModels = new ObservableCollection <IMenuViewModel> { }; var openFileMenuViewModels = new[] { new CommandMenuViewModel(addDataSourceFromFile) { Header = "_File", Icon = Icons.FileOutline, }, new CommandMenuViewModel(addDataSourceFromFolder) { Header = "Fol_der", Icon = Icons.FolderOpen } }; _openItems = new ObservableCollection <IMenuViewModel> { new ParentMenuViewModel(_newCustomMenuViewModels) { Header = "_New" }, new ParentMenuViewModel(openFileMenuViewModels) { Header = "_Open" } }; // We instruct the special collection to place a null value as a separator in between different // collections and then instruct the style (in xaml) to place a separator whenever a null value // is encountered. _fileMenuItems = new CompoundObservableCollection <IMenuViewModel>(true, null) { _openItems }; _fileMenuDataSourceInsertionIndex = _fileMenuItems.ChildCollectionCount; _closeItems = new ObservableCollection <IMenuViewModel> { new CommandMenuViewModel(closeCurrentDataSource) { Header = "Close", }, new CommandMenuViewModel(closeAllDataSources) { Header = "Close All", }, }; _fileMenuItems.Add(_closeItems); _pluginsItems = new ObservableCollection <IMenuViewModel> { new CommandMenuViewModel(showPlugins) { Header = "Plugins", Icon = Icons.PuzzleOutline } }; _fileMenuItems.Add(_pluginsItems); _settingsItems = new ObservableCollection <IMenuViewModel> { new CommandMenuViewModel(showSettings) { Header = "Settings", Icon = Icons.CogOutline } }; _fileMenuItems.Add(_settingsItems); _exitItems = new ObservableCollection <IMenuViewModel> { new CommandMenuViewModel(new KeyBindingCommand(exitCommand) { GestureModifier = ModifierKeys.Alt, GestureKey = Key.F4 }) { Header = "E_xit" } }; _fileMenuItems.Add(_exitItems); _fileMenuMinimumCount = _fileMenuItems.ChildCollectionCount; }