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)
上一篇 2022年7月20日 下午2:36
下一篇 2022年7月20日 下午2:36


相关推荐

  • 使用线程池来创建线程的方法_线程池多线程实现

    使用线程池来创建线程的方法_线程池多线程实现1.如何使用线程池来创建线程?java中提供了一个静态工厂方法来创建不同的线程池: Executors通过静态方法创建出的线程都实现了ExecutorService接口。常用的方法包括:newFixedThreadPool(intthreads);创建一个固定数目的线程池newCachedThreadPool();创建一个可缓存的线程池,调用execute方法将重用以前…

    2022年10月21日
    4
  • 前端跨域请求及解决方案

    前端跨域请求及解决方案什么是跨域请求在前端开发编码过程中 常见的 HTML 标签例如 a form img script link iframe 以及 ajax 操作都可以指向一个资源地址或者说发起一个资源请求 那么这里所说的请求就存在同域请求和跨域请求 所谓跨域请求就是指 当前发起请求的域与该请求所指向的资源所在的域不一致 协议 域名 端口 任意一个不一样都会导致 跨域请求为什么出现在前端中既然同源策略是浏览器

    2026年3月18日
    2
  • SpringCloud微服务架构分析

    SpringCloud微服务架构分析微服务框架微服务是一种架构风格,一个大型复杂软件应用应该由一个或多个微服务组成。系统中的各个微服务都可以被独立部署,每个服务仅关注于完成一件任务就行了,在所有情况下,每个任务都代表着一个小的业务能力。微服务架构其实就是一种架构风格,我们将整个项目划分为多个独立的小项目,也就是我们俗称的微服务,可以理解为每个微服务都单独处理某个功能模块,可以独立开发、测试、部署、监控和扩展,甚至可以用不同的编程语言开发它们。它有利于我们平时项目的开发,解决了一体化架构项目难以扩展,开发周期长,故障级联等问题…

    2022年6月15日
    36
  • 全民“养虾”,创意出圈|蓝鲸OpenClaw衍生项目案例征集启动

    全民“养虾”,创意出圈|蓝鲸OpenClaw衍生项目案例征集启动

    2026年3月13日
    3
  • WebServices简介

    WebServices简介先给出一个概念 SOA 即 ServiceOrien 中文一般理解为面向服务的架构 既然说是一种架构的话 所以一般认为 SOA 是包含了运行环境 编程模型 架构风格和相关方法论等在内的一整套新的分布式软件系统构造方法和环境 涵盖服务的整个生命周期 而在 SOA 的架构风格中 服务是最核心的抽象手段 SOA 中的服务是构建在一些列基于开放标准的基础

    2026年3月26日
    2
  • 永恒之蓝漏洞复现(MS17010)

    永恒之蓝漏洞复现(MS17010)永恒之蓝实验(MS17010)1.概念永恒之蓝是指2017年4月14日晚,黑客团体ShadowBrokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒。恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。2.什么是ARTA

    2022年5月2日
    55

发表回复

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

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