avalondock章节二

avalondock章节二用avalondock写的界面布局,但是对好多东西还是不懂,最起码布局是懵懵懂懂的,先用VS2010自带的工具文档大纲工具看下它的布局再说,布局如下图所示:看下源代码中的DockingManager:publicclassDockingManager:Control,IOverlayWindowHost//,ILogicalChildrenContainer照代码理解的意思

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

用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.net/162161.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java 正则表达式:语法讲解和常用表达式汇总

    Java 正则表达式:语法讲解和常用表达式汇总正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。

    2022年7月19日
    9
  • matlab画三维约束图命令,Matlab画三维图的方法[通俗易懂]

    matlab画三维约束图命令,Matlab画三维图的方法[通俗易懂]三维曲线的画法三维空间曲线要用到plot3函数,这个和plot类似。plot3函数有三个参数,x,y和z轴,比如下面的例子:>>T=-2:0.01:2;>>plot3(cos(2*pi*T),sin(2*pi*T),T)如果安装了SymbolicMathToolbox的话也可以用下面ezlpot3函数的方法:>>ezplot3(‘cos(2*pi…

    2022年10月11日
    0
  • 构建高并发高可用的电商平台架构实践[通俗易懂]

    构建高并发高可用的电商平台架构实践[通俗易懂]各个维度总结电商平台中的高并发高可用的架构实践,从架构设计的理念到平台的逻辑架构,以及到平台架构中各个模块的介绍

    2022年6月30日
    33
  • mybatis逆向生成java代码_mybatis生成

    mybatis逆向生成java代码_mybatis生成前言有时候,我们创建实体类需要跟数据库表里面的字段对应起来。假如一张表有数百个字段,那么手动去写实体类的话就比较麻烦,而且容易出错。解决方案其实解决这个问题的方式有很多,本文介绍其中一种解决方案,通过mybatis的逆向工程生成实体类。本文使用的数据库是Oracle,MySQL只需要修改jar包以及generator.properties配置即可。可以从公众号【程序员高手之路】回复“逆向工程”获取源码!Step1修改p…

    2022年8月21日
    4
  • 为什么卡巴斯基中国没有市场_卡巴斯基2019免费版怎么样

    为什么卡巴斯基中国没有市场_卡巴斯基2019免费版怎么样概述在2019Q3中,我们观察到一种新型的DDoS攻击,证实了我们先前有关攻击者正通过Memcached协议进行攻击的假设。正如我们推测的那样,攻击者尝试使用另外一种不常见的协议来放大DDoS攻击。AkamaiTechnology的专家最近发现他们的一位客户曾遭受攻击,该攻击是借助WS-Discovery多播协议,通过欺骗返回IP地址来实现的。根据其他安全研究人员的说法,网络犯罪分子只是在最…

    2022年8月20日
    9
  • 常见的十大物联网操作系统介绍(物联网开发技术)

    随着物联网产业的迅猛发展,物联网设备的种类和数量也随之快速增长。据Gartner预测,到2020年全球物联网设备将超过260亿个,物联网市场规模将达到1.9万亿美元。与传统的IT领域不一样,物联网设备分布在各个不同领域,功能和形态各不相同,这对物联网提出了巨大的挑战。嵌入式系统成为关键因素物联网依靠互联网完成信息的传递,嵌入式系统的加入使得信息传递更具有专用性。在物联网出现…

    2022年4月12日
    277

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号