public DockViewModel(Dock model) { Model = model; Model.PropertyChanged += (s, e) => { if (e.PropertyName == AutohidePropertyName) { Autohide = model.Configuration.Autohide; } IsDirty = true; }; if (IsInDesignModeStatic) { throw new Exception(); } var viewModels = model.AllItems.Select(i => new DockItemViewModel(i)); Items = new ObservableCollection <DockItemViewModel>(viewModels); ContextMenu = new List <ContextMenuItemViewModel> { new ContextMenuItemViewModel(DockItemAction.CreateToggle("Autohide Dock", () => Model.Configuration.Autohide = true, () => Model.Configuration.Autohide = false, Model.Configuration.Autohide)), new ContextMenuItemViewModel(DockItemAction.CreateNormal("Close", CloseDockWindow)) }; }
/// <summary> /// Initializes a new instance of the MenuItemViewModel class. /// </summary> public ContextMenuItemViewModel(DockItemAction model) { if (model == null) { IsSeparator = true; return; } Model = model; Label = model.Label; if (model.Action != null) { Action = new RelayCommand(model.Action); } IsTogglable = model.IsTogglable; ToggleState = model.ToggleState; HasSubmenu = model.HasSubmenu; if (model.HasSubmenu) { Submenu = model.Submenu.Select(m => new ContextMenuItemViewModel(m)); } }