/// <summary> /// Muestra un panel /// </summary> public void ShowPane(string windowID, string title, System.Windows.Controls.UserControl control, SystemControllerEnums.DockPosition position = SystemControllerEnums.DockPosition.Bottomm) { LayoutContent previous = GetLayoutPrevious(windowID); if (previous != null) { previous.IsActive = true; } else { LayoutAnchorGroup layoutGroup = GetGroupPane(DockManager.Layout, position); LayoutAnchorable layoutPane = new LayoutAnchorable { Title = title, ToolTip = title }; // Añade el contenido layoutPane.Content = control; layoutPane.ContentId = windowID; // Añade el contenido al grupo layoutGroup.Children.Add(layoutPane); // Añade el panel a la lista de documentos del controlador AddDocument(new ToolViewModel(windowID, title, layoutPane, control, position)); } }
public ToolViewModel(string windowID, string name, Xceed.Wpf.AvalonDock.Layout.LayoutContent layoutPane, System.Windows.Controls.UserControl control, SystemControllerEnums.DockPosition position) : base(windowID, name, layoutPane, control) { Name = name; Title = name; DockPosition = position; }
/// <summary> /// Obtiene el grupo de ventanas del panel de la posición especificada /// </summary> private LayoutAnchorGroup GetGroupPane(LayoutRoot layoutRoot, SystemControllerEnums.DockPosition position) { LayoutAnchorSide layoutSide = GetAnchorSide(layoutRoot, position); // Crea el panel si no existía if (layoutSide == null) { layoutSide = new LayoutAnchorSide(); } // Añade un grupo si no existía if (layoutSide.Children == null || layoutSide.Children.Count == 0) { layoutSide.Children.Add(new LayoutAnchorGroup()); } // Devuelve el primer grupo return(layoutSide.Children[0]); }
/// <summary> /// Obtiene uno de los elementos laterales del gestor de ventanas /// </summary> private LayoutAnchorSide GetAnchorSide(LayoutRoot layoutRoot, SystemControllerEnums.DockPosition position) { switch (position) { case SystemControllerEnums.DockPosition.Right: return(layoutRoot.RightSide); case SystemControllerEnums.DockPosition.Left: return(layoutRoot.LeftSide); case SystemControllerEnums.DockPosition.Top: return(layoutRoot.TopSide); case SystemControllerEnums.DockPosition.Bottomm: return(layoutRoot.BottomSide); default: throw new NotImplementedException("Posición desconocida"); } }
/// <summary> /// Añade un panel a la ventana principal /// </summary> public void AddPane(string windowID, string title, System.Windows.Controls.UserControl paneControl, SystemControllerEnums.DockPosition position) { DockingController.ShowPane(windowID, title, paneControl, position); }