Exemplo n.º 1
0
        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;
 }
Exemplo n.º 3
0
        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;
        }