WPFAvalonDock基本用法

WPFAvalonDock基本用法本文简单介绍AvalonDock2.0基本用法,下载AvalonDock2.0dll及主题http://avalondock.codeplex.com/AvalonDock基本类介绍DockingManager:停靠管理类,xaml中AvalonDock的根节点LayoutRoot:布局根节点,有四个属性LeftSide,RightSide,TopSide,ButtomSide展示四

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

本文简单介绍AvalonDock2.0基本用法,下载AvalonDock 2.0dll及主题http://avalondock.codeplex.com/

AvalonDock基本类介绍

DockingManager:停靠管理类,xaml中AvalonDock的根节点

LayoutRoot:布局根节点,有四个属性LeftSide,RightSide,TopSide,ButtomSide展示四个位置的内容

LayoutPanel:布局面板类,可有多个LayoutGroup,实际的窗格都位于LayoutPanel节点下

LayoutAnchorablePaneGroup:可停靠窗格组类

LayoutDocumentPaneGroup:文档窗格组类

LayoutAnchorablePane:可停靠窗格类

LayoutDocumentPane:文档窗格类

LayoutAnchorable:可停靠内容类

LayoutDocument:文档内容类

xaml布局代码

WPFAvalonDock基本用法

<Window x:Class="AvalonDockTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:avalondock="http://schemas.xceed.com/wpf/xaml/avalondock"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <Menu Margin="0" HorizontalAlignment="Left" Name="menu1" VerticalAlignment="Top">
            <MenuItem Header="恢复布局" Click="MenuItem_Click"/>
            <MenuItem Header="断点窗口" Click="MenuItem_Click_1"/>
        </Menu>
        <avalondock:DockingManager x:Name="dockingmanger" Grid.Row="1">
            <avalondock:DockingManager.Theme>
                <avalondock:VS2010Theme/>
            </avalondock:DockingManager.Theme>
            
            <avalondock:LayoutRoot>
                <avalondock:LayoutRoot.LeftSide>
                    <avalondock:LayoutAnchorSide>
                        <avalondock:LayoutAnchorGroup>
                            <avalondock:LayoutAnchorable Title="资源管理器" AutoHideHeight="50" ContentId="l1">
                                <TextBox Width="80" SelectionChanged="TextBox_SelectionChanged"/>
                            </avalondock:LayoutAnchorable>
                            <avalondock:LayoutAnchorable Title="数据库" AutoHideHeight="50" ContentId="l2">
                                <TextBox Width="80" SelectionChanged="TextBox_SelectionChanged"/>
                            </avalondock:LayoutAnchorable>
                        </avalondock:LayoutAnchorGroup>
                    </avalondock:LayoutAnchorSide>   
                </avalondock:LayoutRoot.LeftSide>
                
                <avalondock:LayoutRoot.BottomSide>
                    <avalondock:LayoutAnchorSide>
                        <avalondock:LayoutAnchorGroup x:Name="buttomgroup">
                            <avalondock:LayoutAnchorable Title="输出" ContentId="t1">
                                <TextBox TextWrapping="Wrap" AcceptsReturn="True"></TextBox>
                            </avalondock:LayoutAnchorable>
                            <avalondock:LayoutAnchorable Title="错误" ContentId="t2">
                                <TextBox TextWrapping="Wrap" AcceptsReturn="True"></TextBox>
                            </avalondock:LayoutAnchorable>
                        </avalondock:LayoutAnchorGroup>
                    </avalondock:LayoutAnchorSide>
                </avalondock:LayoutRoot.BottomSide>
                
                <avalondock:LayoutPanel>
                    <avalondock:LayoutDocumentPane>
                        <avalondock:LayoutDocument Title="MainWindow.xaml" ContentId="d1">
                            <TextBox AcceptsReturn="True" TextWrapping="Wrap"></TextBox>
                        </avalondock:LayoutDocument>
                        <avalondock:LayoutDocument Title="MainWindow.xaml.cs" ContentId="d2">
                            <TextBox AcceptsReturn="True" TextWrapping="Wrap"></TextBox>
                        </avalondock:LayoutDocument>
                    </avalondock:LayoutDocumentPane>
                </avalondock:LayoutPanel>
            </avalondock:LayoutRoot>
        </avalondock:DockingManager>
        
    </Grid>
</Window>

动态改变

        private void MenuItem_Click_1(object sender, RoutedEventArgs e)
        {
            try
            {
                LayoutAnchorable la = new LayoutAnchorable();
                la.Title = "断点";
                la.Content = new TextBox();
                buttomgroup.Children.Add(la);
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

保存布局

            var serializer = new XmlLayoutSerializer(dockingmanger);
            using(var stream = new StreamWriter("layout.xml"))
            {
                serializer.Serialize(stream);
            }

恢复布局

        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            var serializer = new XmlLayoutSerializer(dockingmanger);
            using(var stream = new StreamReader("layout.xml"))
            {
                serializer.Deserialize(stream);
            }
        }

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

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

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


相关推荐

  • ideaIU-2022.01 激活码【最新永久激活】

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

    2022年3月31日
    768
  • Python – 编写可视化界面(Python+PyCharm+PyQt)

    Python – 编写可视化界面(Python+PyCharm+PyQt)Python编写可视化界面最近开始学习Python,但只限于看理论,编几行代码,觉得没有意思,就想能不能用Python编写可视化的界面。遂查找了相关资料,发现了PyQt,由于前一段时间刚看过Qt,而且对Qt的印象很好,于是觉得用PyQt应该是一个比较愉快的选择。1、前言PyQt的版本需要与Python的版本保持一致,在这里我用的PyQT的版本是PyQt5-5.6-gp…

    2022年5月17日
    42
  • Linux文件rwx属性「建议收藏」

    Linux文件rwx属性「建议收藏」Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls-a除了显示一般文件名外,连隐藏文件也会显示出来。  ls-l(这个参数是字母L的小写,不是数字1)  这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls-l这个指令。例如我在某个目录下键入ls-l可能会显示如下信息(一共7个栏位):  文件属性文件数拥有者

    2022年5月25日
    38
  • PID控制学习–原理(一)

    PID控制学习–原理(一)目录一、PID控制原理与程序流程1、过程控制2、PID调节各个单元的作用二、数字PID控制器1、模拟PID控制规律的离散化2、数字PID控制器的差分方程3、常见的控制方式4、PID算法的两种形式三、PID算法的程序流程1、增量型PID算法的程序流程2、位置型PID控制的程序流程3、程序流程四、标准PID算法的改进1、微分项的改进2、微分线…

    2022年6月2日
    37
  • linux对外开放端口_如何通过命令开启端口

    linux对外开放端口_如何通过命令开启端口本文目录一、引言二、管理防火墙的命令2.1、开启防火墙2.1.1首先查看防火墙状态2.1.2开启防火墙2.1.3设置开机自启2.1.4重启防火墙2.1.5查看防火墙设置开机自启是否成功2.2、开启特定端口2.2.1添加端口2.2.2重新载入2.2.3查看2.2.4删除2.2.5关闭防火墙2.2.6查看开启的所有端口2.2.7查看服务的监听一、引言在Centos7.x中防火墙由firewalld来管理,以前为了方便,把防火墙都关闭了,因为现在项目

    2025年9月29日
    3
  • Hadoop生态系统组件最全介绍

    Hadoop生态系统组件最全介绍开源改变世界,拥抱开源,拥抱未来Hadoop生态系统组件介绍,掌握吹x大法,走到哪里都不怕图片来自bing,跟视觉中国没关系,嗯,很严肃的声明 功能模块 产品名称 产品简述 关键技术 HDFS 分布式文件系统 MapReduce 数据处理编程:map(数据拆分),shuffle(数据排序分发),reduce(数据合并) YAR…

    2022年5月12日
    43

发表回复

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

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