public MainViewModel() { Themes = new List <string> { "Default", "System", "Light", "Gray", "Dark", }; SelectedThemeIndex = 3; // Build dock layout directly. //var dockTabPaneViewModel = new DockTabPaneViewModel(); //dockTabPaneViewModel.Items.Add(new SystemViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new SystemViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new DigitalRuneViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new DigitalRuneViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new PropertyGridViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new PropertyGridViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new ICSharpDevelopViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new ICSharpDevelopViewModel { DockState = DockState.Dock }); //var dockAnchorPaneViewModel = new DockAnchorPaneViewModel //{ // ChildPane = dockTabPaneViewModel //}; //DockControlViewModel = new DockControlViewModel(new DockStrategy()) //{ // RootPane = dockAnchorPaneViewModel //}; // Or use DockStrategy to do the same. var dockStrategy = new DockStrategy(); DockControlViewModel = new DockControlViewModel(dockStrategy) { RootPane = new DockAnchorPaneViewModel(), }; dockStrategy.Begin(); dockStrategy.Dock(new SystemViewModel()); dockStrategy.Dock(new SystemViewModel()); dockStrategy.Dock(new DigitalRuneViewModel()); dockStrategy.Dock(new DigitalRuneViewModel()); dockStrategy.Dock(new PropertyGridViewModel()); dockStrategy.Dock(new PropertyGridViewModel()); dockStrategy.Dock(new ICSharpDevelopViewModel()); dockStrategy.Dock(new ICSharpDevelopViewModel()); dockStrategy.End(); }
public MainViewModel() { Themes = new List<string> { "Default", "System", "Light", "Gray", "Dark", }; SelectedThemeIndex = 3; // Build dock layout directly. //var dockTabPaneViewModel = new DockTabPaneViewModel(); //dockTabPaneViewModel.Items.Add(new SystemViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new SystemViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new DigitalRuneViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new DigitalRuneViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new PropertyGridViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new PropertyGridViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new ICSharpDevelopViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new ICSharpDevelopViewModel { DockState = DockState.Dock }); //var dockAnchorPaneViewModel = new DockAnchorPaneViewModel //{ // ChildPane = dockTabPaneViewModel //}; //DockControlViewModel = new DockControlViewModel(new DockStrategy()) //{ // RootPane = dockAnchorPaneViewModel //}; // Or use DockStrategy to do the same. var dockStrategy = new DockStrategy(); DockControlViewModel = new DockControlViewModel(dockStrategy) { RootPane = new DockAnchorPaneViewModel(), }; dockStrategy.Begin(); dockStrategy.Dock(new SystemViewModel()); dockStrategy.Dock(new SystemViewModel()); dockStrategy.Dock(new DigitalRuneViewModel()); dockStrategy.Dock(new DigitalRuneViewModel()); dockStrategy.Dock(new PropertyGridViewModel()); dockStrategy.Dock(new PropertyGridViewModel()); dockStrategy.Dock(new ICSharpDevelopViewModel()); dockStrategy.Dock(new ICSharpDevelopViewModel()); dockStrategy.End(); }
private void Commit() { if (_layoutChanged) { if (IsDraggingDockTabItems) { // Dragging ended in DockTabPanel. RestoreFloatWindowPosition(); } else if (_floatWindow != null) { // Dragging ended outside of a DockTabPanel. Check the dock indicators to find the // desired target position. IDockPane target = null; DockPosition position = DockPosition.None; if (HasResult(_borderDockIndicators)) { target = _dockStrategy.DockControl.RootPane; position = _borderDockIndicators.Result; } else if (HasResult(_paneDockIndicators)) { target = DockHelper.GetViewModel <IDockPane>(_paneDockIndicators.Target); position = _paneDockIndicators.Result; } if (position != DockPosition.None && target != null) { // User has dropped FloatWindow on a DockIndicator. // --> Dock content. var floatWindowVM = _floatWindow.GetViewModel(); foreach (var item in _draggedItems) { DockHelper.Remove(floatWindowVM, item); item.DockState = DockState.Hide; } var dockTabPane = _dockStrategy.CreateDockTabPane(_draggedItems[0], DockState.Hide); for (int i = 1; i < _draggedItems.Count; i++) { dockTabPane.Items.Add(_draggedItems[i]); } _dockStrategy.Dock(dockTabPane, target, position); RestoreFloatWindowPosition(); } else { // The final state is DockState.Float. if (!_canFloat && _originalDockState != DockState.Float) { // DockState.Float is not allowed. Rollback(); return; } } } } // Keep the items at their new position. // --> Remove the item proxies. var dockState = _draggedItems[0].DockState; RemoveItemProxies(dockState); if (_layoutChanged && dockState == DockState.Dock) { // The position within the DockControl may have changed. The assignment to the // auto-hide bar is no longer valid. // --> Also remove item proxies from auto-hide bars. RemoveItemProxies(DockState.AutoHide); } // Restore the original dock state of the dragged items. RestoreItemsFromProxies(); }