大家好,又见面了,我是你们的朋友全栈君。
用avalondock写的界面布局,但是对好多东西还是不懂,最起码布局是懵懵懂懂的,先用VS2010自带的工具文档大纲工具看下它的布局再说,布局如下图所示:
看下源代码中的DockingManager:
public classDockingManager : Control, IOverlayWindowHost//,ILogicalChildrenContainer
照代码理解的意思是个逻辑树的容器,也是逻辑树的总管理者,我想既然要管理的话,应该是在最高层次,包含所有对象吧,要不管理不了。
Control类里只能包含一个对象,看文档结构里,它包含了个LayoutRoot 找字面意思应该是布局的根,源代码
[ContentProperty(“RootPanel”)]
[Serializable]
public class LayoutRoot : LayoutElement,ILayoutContainer, ILayoutRoot
是一个根面板,我们就认为所有的dockingpanel中的文档或者其他控件都要在这个panel上布局,要不怎么能叫RootPanel, 类比xaml文件映射下 DockingManager-àWindow
LayoutRoot à(Grid,stack) ILayoutContainer从这个意思理解就够了,就是个布局容器.
LeftSide与LayoutPanel在同一级别。
public class LayoutRoot : LayoutElement,ILayoutContainer, ILayoutRoot
{
publicLayoutRoot()
{
RightSide = new LayoutAnchorSide();
LeftSide = newLayoutAnchorSide();
TopSide = newLayoutAnchorSide();
BottomSide = new LayoutAnchorSide();
RootPanel = new LayoutPanel(new LayoutDocumentPane());
}
LayoutRoot构造函数里已经包含了,5个对象了。分别是 左右上下边停靠和面板停靠,所以在LayoutRoot的children中必定含有LayoutAnchorSide或 LayoutPanel 在添加LayoutAnchorSide布局是应该是要首先定义它的位置,在代码中表现为
<avalondock:LayoutRoot>
<avalondock:LayoutRoot.LeftSide>
<avalondock:LayoutAnchorSide>
</avalondock:LayoutAnchorSide>
</avalondock:LayoutRoot.LeftSide>
</avalondock:LayoutRoot>
如果停靠的是一组对象在leftside上的话就要用到下面的类
public class LayoutAnchorGroup : LayoutGroup<LayoutAnchorable>, ILayoutPreviousContainer,ILayoutPaneSerializable
布局停靠组,因为有它有1个容器类是存放布局停靠的对象的,看类的定义:
public class LayoutAnchorSide : LayoutGroup<LayoutAnchorGroup>
该类的对象必须包含 LayoutAnchorGroup 元素在XAML中的实现如下图所示
看如下类的定义:
public class LayoutAnchorGroup : LayoutGroup<LayoutAnchorable>, ILayoutPreviousContainer,ILayoutPaneSerializable
在声明LayoutAnchorGroup中必须也要声明一个LayoutAnchorable元素。
LayoutAnchorable : LayoutContent
从类声明可以看出,在这个对象下面就可以声明Content,内容了。
Leftside实现的为左边栏的布局实现。凡是带side的都为在边栏依附的位置。
LayoutPanel 除过side布局,其余的全部包含在LayoutPanel;
LayoutDocumentPane 是中心内容的panel
LayoutAnchorablePaneGroup为上,下,左,右。停靠的窗口。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/162161.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...