AvalonDock 2.0 的简单运用

AvalonDock 2.0 的简单运用最近在研究AvalonDock的一些使用,碰到了一些问题。现在拿出来跟大家分享分享。网上找了一大把AvalonDock1.3版本的资料,弄出Demo后发现属性面板(DockableContent)设置成浮动后不能停靠其它的面板。最后只得试试AvalonDock2.0版本的,还好2.0版本没让我们失望。首先需要库文件:Xceed.Wpf.AvalonDock…

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

     最近在研究AvalonDock的一些使用,碰到了一些问题。现在拿出来跟大家分享分享。

     网上找了一大把AvalonDock 1.3版本的资料,弄出Demo后发现属性面板(DockableContent)设置成浮动后不能停靠其它的面板。最后只得试试AvalonDock 2.0版本的,还好2.0版本没让我们失望。

     首先需要库文件:Xceed.Wpf.AvalonDock,若需要Aero或VS2010主题效果需引用Xceed.Wpf.AvalonDock.Themes.Aero或Xceed.Wpf.AvalonDock.Themes.VS2010,当然还有其它漂亮的主题可以在官网(http://avalondock.codeplex.com/)自行下载.

     首先需要在xaml文件头部引入这些dll(当然在此之前您还得把前面说到的库文件引入项目):

xmlns:avalonDock="http://schemas.xceed.com/wpf/xaml/avalondock"

     xaml布局代码:

AvalonDock 2.0 的简单运用
AvalonDock 2.0 的简单运用

 1 <avalonDock:DockingManager Grid.Row="1" x:Name="DManager">
 2         <avalonDock:DockingManager.Theme>
 3             <!--<avalonDock:AeroTheme/>-->
 4             <avalonDock:VS2010Theme/>
 5             <!--<avalonDock:ExpressionDarkTheme/>-->
 6             <!--<avalonDock:ExpressionLightTheme/>-->
 7             <!--<avalonDock:GenericTheme/>-->
 8             <!--<avalonDock:MetroTheme/>-->
 9             </avalonDock:DockingManager.Theme>
10 
11         <avalonDock:LayoutRoot>
12             <avalonDock:LayoutRoot.LeftSide  >
13                 <avalonDock:LayoutAnchorSide >
14                     <avalonDock:LayoutAnchorGroup>
15                         <avalonDock:LayoutAnchorable Title="left1" AutoHideWidth="50" ContentId="left1">
16                             <TextBox Width="80" SelectionChanged="TextBox_SelectionChanged"></TextBox>
17                         </avalonDock:LayoutAnchorable>
18 
19                         <avalonDock:LayoutAnchorable Title="left2" AutoHideWidth="20" ContentId="left2">
20                             <TextBox Width="80"></TextBox>
21                         </avalonDock:LayoutAnchorable>
22 
23                     </avalonDock:LayoutAnchorGroup>
24                 </avalonDock:LayoutAnchorSide>
25             </avalonDock:LayoutRoot.LeftSide>
26 
27             <avalonDock:LayoutPanel>
28                 <avalonDock:LayoutAnchorablePaneGroup DockWidth="100">
29                     <avalonDock:LayoutAnchorablePane>
30                         <avalonDock:LayoutAnchorable Title="text1" ContentId="text1">
31                             <TextBox  TextWrapping="Wrap" AcceptsReturn="True"></TextBox>
32                         </avalonDock:LayoutAnchorable>
33 
34                         <avalonDock:LayoutAnchorable Title="text2" ContentId="text2">
35                             <TextBox  TextWrapping="Wrap" AcceptsReturn="True"></TextBox>
36                         </avalonDock:LayoutAnchorable>
37                     </avalonDock:LayoutAnchorablePane>
38                 </avalonDock:LayoutAnchorablePaneGroup>
39 
40                 <avalonDock:LayoutDocumentPane>
41                         <avalonDock:LayoutDocument Title="document1" ContentId="doc1">
42                         <TextBox AcceptsReturn="True" TextWrapping="Wrap"></TextBox>
43                         </avalonDock:LayoutDocument>
44 
45                         <avalonDock:LayoutAnchorable Title="document2" ContentId="doc1">
46                             <TextBox AcceptsReturn="True" TextWrapping="Wrap"></TextBox>
47                         </avalonDock:LayoutAnchorable>
48                     </avalonDock:LayoutDocumentPane>
49             </avalonDock:LayoutPanel>
50         </avalonDock:LayoutRoot>
51 
52     </avalonDock:DockingManager>

View Code

 

效果:

AvalonDock 2.0 的简单运用 

 

 

 

<avalonDock:LayoutAnchorablePane>和<avalonDock:LayoutDocumentPane>我分别把它们叫做属性布局面板和文档布局面板。属性布局面板的特性是停靠在面板的边缘时可以设置自动隐藏,而且属性布局面板也可以作为一个可停靠面板供其它的属性布局面板停靠。文档布局面板只可以漂浮和停靠在主布局面板中,不可以停靠在属性布局面板里面。

 <avalonDock:LayoutAnchorablePane>和<avalonDock:LayoutDocumentPane>布局面板需要位于<avalonDock:LayoutPanel>布局面板里面,若有需要设置多个属性布局面板和文档布局面板置于一个面板组中可以分别使用<avalonDock:LayoutAnchorablePaneGroup>和 <avalonDock:LayoutDocumentPaneGroup>。

      正在承载我们内容控件的是<avalonDock:LayoutAnchorable>和<avalonDock:LayoutDocument>,我们可以在它们里面添加我们自己的内容。它们只能放在<avalonDock:LayoutAnchorablePane>和<avalonDock:LayoutDocumentPane>里面,看自己的需求可以自己组合使用。

  布局就到这里了,接下来让我们看看如何保存和恢复布局,AvalonDock 2.0提供了相应的操作类XmlLayoutSerializer,需要添加引用using Xceed.Wpf.AvalonDock.Layout.Serialization;

     cs代码:

         //保存布局
            var serializer = new XmlLayoutSerializer(DManager);
            using (var stream = new StreamWriter("lay.txt"))
                serializer.Serialize(stream);

       //恢复布局
       var serializer = new XmlLayoutSerializer(DManager);
         using (var stream = new StreamReader("lay.txt"))
          serializer.Deserialize(stream);

 

保存布局会把当前的布局(DManager)保存在文件“lay.txt”中,恢复布局会把“lay.txt”中的布局内容恢复到界面(DManager)中。这里有点必须注意,使用这个功能时必须为每个内容面板添加ContentId属性,如 <avalonDock:LayoutAnchorable Title=”left1″ AutoHideWidth=”50″ ContentId=”left1″>,否则将不能恢复。

       分享就到这里结束了,其实AvalonDock还有许多其它方面的功能,比如可以使用<avalonDock:DockingManager.AnchorableHeaderTemplate>为属性内容界面的头部自定义内容等等,水平有限,内容可能存在纰漏之处还请见谅。

 

    源代码下载

 

转载于:https://www.cnblogs.com/yangxw100/p/3341007.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • C语言 Socket TCP通信

    C语言 Socket TCP通信TCP简介传输控制协议(TCP)是一种网络通信协议,旨在通过Internet发送数据包。TCP是OSI层中的传输层协议,用于通过传输和确保通过支持网络和Internet传递消息来在远程计算机之间创建连接。

    2022年7月13日
    18
  • 作为大学生,如何通过学校认证免费获取正版matlab[通俗易懂]

    作为大学生,如何通过学校认证免费获取正版matlab[通俗易懂]时间有限,内容从简主要介绍大学生如何免费获取正版matlab,前提是贵学校已经为你提供了正版的matlab!!!否则,可以直接点右上角了。1.背景介绍作为前大学生,需要用matlab,又不想用盗版,也不想搞激活成功教程之类的,麻烦死了1.1直接上MathWorks官网matlab正版对于学生来说很贵。standard版的一年¥6,200,永久的¥15,500.education版的分…

    2022年10月11日
    2
  • 百度地图API开发

    百度地图API开发1,申请密钥:自己的秘钥2,初始化头文件3,创建一个盛放地图的div:4,初始化地图:5,丰富地图功能:*添加地图控件:map2.addControl(newBMap.Navigatio

    2022年7月1日
    29
  • 有哪些域名可以提交备案

    有哪些域名可以提交备案

    2021年9月21日
    86
  • 刷子 撸一撸手头的几把刷

    刷子 撸一撸手头的几把刷想写刷子的博文不是一天两天了,看到这么多刷子,我立马头大啊!其实草刷子,是最近一年的动作,基本上都是近期收的,所以我元气很伤!!!休息天,花了2个小时拍照,这些基本都是比较爱用的刷子,还有一部分刷子不怎么用的被我雪藏起来了!全部倒在桌子上,感叹两个字:好乱!!! 经过整理就好看多了! 上层:下层:

    2022年8月22日
    7
  • pycharmPyCharm 2021.8.3安装激活码【永久激活】

    (pycharmPyCharm 2021.8.3安装激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~KU…

    2022年3月22日
    61

发表回复

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

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