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


相关推荐

  • Java的输入输出(新手上路版)

    Java的输入输出(新手上路版)

    2021年9月29日
    82
  • 关于matlab GUI重命名的问题。「建议收藏」

    关于matlab GUI重命名的问题。「建议收藏」我们在用matlab开发GUI的时候,有时往往觉得GUI名字不好,想要换一个GUI的名字。很多人的做法是:修改fig和m文件名。但是只这样修改后,再运行程序时,发现出现了好多错误,程序根本无法运行。这时的你发现,噢!原来在m文件里面还需要修改,你需要手动将.m中的所有函数的前边部分重新修改进行替换,但是这样修改太繁琐,如果是一个简单的GUI还行,要是复杂的,改得你怀疑人生,还容易出错,出错后都难

    2022年5月29日
    57
  • 计算机操作系统(第3版)课后习题答案(完整版)

    计算机操作系统(第3版)课后习题答案(完整版)第一章1.设计现代OS的主要目标是什么?答:(1)有效性(2)方便性(3)可扩充性(4)开放性2.OS的作用可表现在哪几个方面?答:(1)OS作为用户与计算机硬件系统之间的接口(2)OS作为计算机系统资源的管理者(3)OS实现了对计算机资源的抽象3.为什么说OS实现了对计算机资源的抽象?答:OS首先在裸机上覆盖一层I/O设备管理软件,实现了对计算机硬件操作的第

    2022年5月30日
    143
  • 前缀索引

    前缀索引当索引是很长的字符序列时,这个索引将会很占内存,而且会很慢,这时候就会用到前缀索引了。所谓的前缀索引就是去索引的前面几个字母作为索引,但是要降低索引的重复率,索引我们还必须要判断前缀索引的重复率。先看这样一张表:mysql&gt;select*fromtest;+———-+——-+|name|score|+——–…

    2022年5月24日
    39
  • kernel dma protection_系统感知进程的唯一实体是

    kernel dma protection_系统感知进程的唯一实体是为BCG界面库的记忆特性所晕倒同事使用BCGControlBarPro处理界面,今天在修改菜单资源时却发生一件很奇怪的事情:无论怎么修改,程序运行后始终显示的还是改动以前的菜单,多次清空临时文件、生成文件以及重新编译也无济于事。同事为此折腾了一个上午,郁闷得不行。我用UltraEdit搜索了一下整个工程,并没有发现以前的字符串资源,因此排除了是编译器的问题。不是编译器的问题,那么就只能是BCG的问题了,我怀疑是BCG对资源进行了“记忆”处理,为了验证这一想法,我让同事将新生成的程序拷贝到一台没有使用过该程序

    2022年10月8日
    0
  • 零基础学Java(1)初识Java程序

    零基础学Java(1)初识Java程序前言就国内来说,Java毫无疑问是后端语言中的No.1没有之一,所以今天我们也来0基础学习Java!!!Java的好处(针对测试工程师)面试加分->涨薪大多数公司服务端用的都是Java,

    2022年7月31日
    6

发表回复

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

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