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

相关推荐

  • Springmvc注解@Resource和@Autowired区别对比

    Springmvc注解@Resource和@Autowired区别对比Springmvc注解@Resource和@Autowired区别对比

    2022年4月24日
  • pycharm如何安装第三方库_python第三方库离线安装

    pycharm如何安装第三方库_python第三方库离线安装1.安装第三方库首先打开pycharm,点击【file】->【Setting】,如图所示:打开后如图所示:右侧则显示出已经安装的包,如果想安装新的包,点击绿色加号。2.安装插件首先点击插件:如图所示:点击下方中可以从网络或者本地安装插件。3.利用命令行安装包打开命令行窗口,这不许多说。语法为:pipinstall包名注意:包名不要写错哦当然前提是你要安装了pip包,我用的是pyth

    2022年8月25日
  • cygwin安装组件教程_cygwin常用命令

    cygwin安装组件教程_cygwin常用命令1.安装make下载make包https://gnu-make.soft32.com/free-download/将make解压放到E:\cygwin64\home\Administrator2.在cygwin中进入/home/Administrator/make-3.81路径依次执行以下命令:./configure./build.sh在make-3.81下就会生成make.exe文件3.将make.exe移到shell命令根目录mvmake.exe/

    2022年10月10日
  • 基于canoe 新建一个lin工程_canoe canalyzer 区别[通俗易懂]

    基于canoe 新建一个lin工程_canoe canalyzer 区别[通俗易懂]Vector发布了CANoe以及CANalyzer7.5新版本[2010-12-28]CANoe7.5新特性??改进了“Trace”窗口的用户菜单,集成了过滤器,并增加了……例如通过此控件选择配置文件等CANoeNumericUp/DownPanelHelpButtonCANoe、CANalyzerCANoePathDialogPictu…

    2022年6月16日
  • navicatpremium15激活码(JetBrains全家桶)

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

    2022年3月21日
  • Numpy中的meshgrid()函数

    Numpy中的meshgrid()函数转载自:https://blog.csdn.net/littlehaes/article/details/83543459官方解释:np.meshgrid(*xi,**kwargs)Returncoordinatematricesfromcoordinatevectors.从坐标向量中返回坐标矩阵不够直观直观的例子二维坐标系中,X轴可以取三个值1,2,3,Y轴可以取三…

    2022年6月11日

发表回复

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

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