/// <summary> /// 以DockBar模式(必须指定停靠方向,否则默认停靠在左侧)向DockManager注册一个DockElement /// </summary> /// <param name="title">标题栏文字</param> /// <param name="content">内容</param> /// <param name="imageSource">标题栏图标</param> /// <param name="side">停靠方向(默认左侧)</param> /// <param name="canSelect">是否直接停靠在选项栏中供用户选择(默认为False)</param> /// <param name="desiredWidth">期望的宽度</param> /// <param name="desiredHeight">期望的高度</param> /// <returns></returns> public void RegisterDock(IDockSource content, DockSide side = DockSide.Left, bool canSelect = false, double desiredWidth = Constants.DockDefaultWidthLength, double desiredHeight = Constants.DockDefaultHeightLength) { DockElement ele = new DockElement() { ID = id++, Title = content.Header, Content = content as UIElement, ImageSource = content.Icon, Side = side, Mode = DockMode.DockBar, CanSelect = canSelect, DesiredWidth = desiredWidth, DesiredHeight = desiredHeight }; switch (side) { case DockSide.Left: case DockSide.Right: case DockSide.Top: case DockSide.Bottom: _root.AddSideChild(ele, side); break; default: //其他非法方向返回NULL ele.Dispose(); break; } var ctrl = new DockControl(ele); AddDockControl(ctrl); content.DockControl = ctrl; }
private void _DestroyContentForModel(DockElement Model) { if (ActualWidth > 0) { Model.DesiredWidth = ActualWidth - Constants.SplitterSpan / 2; Model.DesiredHeight = ActualHeight - Constants.SplitterSpan / 2; } _layoutContent.Model = null; Children.Clear(); }
private void _CreateContentForModel(DockElement model) { _layoutContent.Model = model; switch (model.Side) { case DockSide.Left: case DockSide.Right: _splitter.Cursor = Cursors.SizeWE; break; case DockSide.Top: case DockSide.Bottom: _splitter.Cursor = Cursors.SizeNS; break; } Children.Add(_layoutContent); Children.Add(_splitter); }
/// <summary> /// 以Float模式向DockManager注册一个DockElement /// </summary> /// <param name="title">标题栏文字</param> /// <param name="content">内容</param> /// <param name="imageSource">标题栏图标</param> /// <param name="side">停靠方向(默认左侧)</param> /// <param name="desiredWidth">期望的宽度</param> /// <param name="desiredHeight">期望的高度</param> /// <returns></returns> public void RegisterFloat(IDockSource content, DockSide side = DockSide.Left, double desiredWidth = Constants.DockDefaultWidthLength, double desiredHeight = Constants.DockDefaultHeightLength) { DockElement ele = new DockElement() { ID = id++, Title = content.Header, Content = content as UIElement, ImageSource = content.Icon, Side = side, Mode = DockMode.Float, DesiredWidth = desiredWidth, DesiredHeight = desiredHeight }; var ctrl = new DockControl(ele); var group = new LayoutGroup(side, ele.Mode, this); group.Attach(ele); AddDockControl(ctrl); content.DockControl = ctrl; }
/// <summary> /// 以选项卡模式向DockManager注册一个DockElement /// </summary> /// <param name="title">标题栏文字</param> /// <param name="content">内容</param> /// <param name="imageSource">标题栏图标</param> /// <param name="canSelect">是否直接停靠在选项栏中供用户选择(默认为False)</param> /// <param name="desiredWidth">期望的宽度</param> /// <param name="desiredHeight">期望的高度</param> /// <returns></returns> public void RegisterDocument(IDockSource content, bool canSelect = false, double desiredWidth = Constants.DockDefaultWidthLength, double desiredHeight = Constants.DockDefaultHeightLength) { DockElement ele = new DockElement(true) { ID = id++, Title = content.Header, Content = content as UIElement, ImageSource = content.Icon, Side = DockSide.None, Mode = DockMode.Normal, CanSelect = canSelect, DesiredWidth = desiredWidth, DesiredHeight = desiredHeight }; var ctrl = new DockControl(ele); AddDockControl(ctrl); _root.DocumentModels[0].Attach(ele); content.DockControl = ctrl; }
/// <summary> /// 以Float模式向DockManager注册一个DockElement /// </summary> /// <param name="title">标题栏文字</param> /// <param name="content">内容</param> /// <param name="imageSource">标题栏图标</param> /// <param name="side">停靠方向(默认左侧)</param> /// <param name="desiredWidth">期望的宽度</param> /// <param name="desiredHeight">期望的高度</param> /// <returns></returns> public void RegisterFloat(IDockSource content, DockSide side = DockSide.Left, int?id = null, double desiredWidth = Constants.DockDefaultWidthLength, double desiredHeight = Constants.DockDefaultHeightLength, double floatLeft = 0.0, double floatTop = 0.0) { DockElement ele = new DockElement() { ID = id.HasValue ? id.Value : _GetID(), Title = content.Header, Content = content, ImageSource = content.Icon, Side = side, Mode = DockMode.Float, DesiredWidth = desiredWidth, DesiredHeight = desiredHeight, FloatLeft = floatLeft, FloatTop = floatTop }; var ctrl = new DockControl(ele); var group = new LayoutGroup(side, ele.Mode, this); group.Attach(ele); AddDockControl(ctrl); content.DockControl = ctrl; }
/// <summary> /// 以选项卡模式向DockManager注册一个DockElement /// </summary> /// <param name="title">标题栏文字</param> /// <param name="content">内容</param> /// <param name="imageSource">标题栏图标</param> /// <param name="canSelect">是否直接停靠在选项栏中供用户选择(默认为False)</param> /// <param name="desiredWidth">期望的宽度</param> /// <param name="desiredHeight">期望的高度</param> /// <returns></returns> public void RegisterDocument(IDockSource content, int?id = null, bool canSelect = false, double desiredWidth = Constants.DockDefaultWidthLength, double desiredHeight = Constants.DockDefaultHeightLength, double floatLeft = 0.0, double floatTop = 0.0) { DockElement ele = new DockElement(true) { ID = id.HasValue ? id.Value : _GetID(), Title = content.Header, Content = content, ImageSource = content.Icon, Side = DockSide.None, Mode = DockMode.Normal, CanSelect = canSelect, DesiredWidth = desiredWidth, DesiredHeight = desiredHeight, FloatLeft = floatLeft, FloatTop = floatTop }; var ctrl = new DockControl(ele); AddDockControl(ctrl); _root.DocumentModels[0].Attach(ele); content.DockControl = ctrl; }
public void Dispose() { Model = null; DataContext = null; }