前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >avalondock章节二

avalondock章节二

作者头像
全栈程序员站长
发布2022-09-09 15:10:22
2740
发布2022-09-09 15:10:22
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

用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为上,下,左,右。停靠的窗口。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162161.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档