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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 亚交联盟怎么样?我的真实经历

    亚交联盟怎么样?我的真实经历以前听过做亚交只要到了可以支付的金额,就会把你的级别降低,又原来的从$2/$1(女/男)降到$0.30/$0.15。现在自己做了,果然如此。今天收到亚交邮件:谢谢您对亚交的支持。至今您无法在每30位免

    2022年7月3日
    24
  • android telephony 原理解析与开发指南_Android逆向pdf

    android telephony 原理解析与开发指南_Android逆向pdf目录:Phone的继承关系与PhoneFactory(GsmCdmaPhone、ImsPhone、SipPhone)Phone进程的启动Phone对象的初始化(DefaultPhoneNotif

    2022年8月4日
    4
  • django配置文件详解_pycharm运行配置

    django配置文件详解_pycharm运行配置前言Django的配置文件settings.py用于配置整个网站的环境和功能,核心配置必须有项目路径、密钥配置、域名访问权限、App列表、中间件、资源文件、模板配置、数据库的连接方式基本配置信息

    2022年8月7日
    0
  • 完美者常用软件光盘2008

    完美者常用软件光盘2008下载地址:http://down.wmzhe.com/html/view-9663.htm1.JPG(45.22KB)2007-12-2719:102.JPG(49.8KB)2007-12-2719:103.JPG(44.11KB)2007-12-2719:1044.JPG(55.81KB)2007-1

    2022年7月26日
    1
  • linux 下vim删除多行「建议收藏」

    linux 下vim删除多行「建议收藏」1、按下Esc键进入命令模式2、然后输入下列命令:setnu#让当前文档内容显示行号,后面删除的时候是根据行号来删除的3、看下面例子:3,24d#敲下回车之后就会删除第3~24行的全部内容

    2022年6月15日
    130
  • html导航栏纵向代码,html横向导航栏怎么做?横向导航条代码实例

    html导航栏纵向代码,html横向导航栏怎么做?横向导航条代码实例有不少小伙伴在刚学习html的时候都会遇到这样一个问题:html横向导航栏怎么做?今天W3Cschool小编就为大家分享一下简单的横向导航条代码,相信会对大家有所帮助。html横向导航栏一般用两种方法来制作:第一种,我们使用块状结构结合行内结构来制作。第二种,我们使用​float​属性来制作。由于第一种比较常用,一下就以第一种方式来介绍。首先大家要明确一下块状元素与行内结构的不同之处:(1…

    2022年5月28日
    43

发表回复

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

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