avalondock章节二

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

 

               

                

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值