WPF AvalonDock 常用功能使用

article/2025/9/25 0:24:30
  1. AvalonDock是什么?

            

    1. AvalonDock是一个开源项目【GitHub - Dirkster99/AvalonDock: Our own development branch of the well known WPF document docking libraryGitHub - Dirkster99/AvalonDock: Our own development branch of the well known WPF document docking libraryGitHub - Dirkster99/AvalonDock: Our own development branch of the well known WPF document docking library】,也有付费的;免费的也够基本功能使用了;主要用于管理可停靠式布局,有窗格和文档两类,AvalonDock库提供了一些类,【这部分借用了网上一些文章的优秀总结】如
    2. DockingManager : 停靠管理器类,是AvalonDock中的核心控件之一,负责管理浮动窗体、布局存储、恢复,样式主题等。在XAML中,是AvaDock元素的根节点
    3. LayoutRoot : 布局根节点类,DockingManager中的内容控件完全占满DockingManager中的空间。LayoutRoot包含四个属性,LeftSide,RightSide,TopSide,BottomSide,分别用于展示DockingManager中左右上下四个位置的内容,但初始状态为隐藏状态。另外两个属性FloatingWindows,Hidden分别为浮动窗体集合和隐藏窗体集合。当一个窗格浮动时,AvalonDock会将其从其所在组中删除,然后放置到FloatingWindows集合中。当一个窗格关闭时,会将其放置在Hidden集合中。
    4. LayoutPanel:布局面板类,LayoutRoot中的内容控件,完全占满LayoutRoot中的空间,在LayoutPanel中,可以有多个LayoutGroup,可以设定Orientation 属性,控件布局组的浮动方向。实际的窗格都位于LayoutPanel节点下。
    5. LayoutAnchorablePane:可停靠窗格类,浮动窗格是可停靠控件LayoutAnchorable的容器。一个窗格中,可以有多个可停靠控件。浮动窗格中的可停靠控件只能是LayoutAnchorable.窗格大小设定后,不能自动改变。
    6. LayoutDocumentPane:文档窗格类,与LayoutAnchorablePane类似,也是可停靠控件的容器,文档窗格类中可以放置可停靠控件LayoutAnchorable,也可以放置文档控件LayoutDocument,LayoutDocunemtPane会自动占满窗体的窗体布局中的剩余空间。
    7. LayoutAnchorablePaneGroup:可停靠窗格组类,是可停靠窗格
    8. LayoutAnchorablePane的容器。通过设置Orientation 属性,用于管理多个可停靠窗格的浮动方向。LayoutDocumentPaneGroup:文档窗格组类,是文档窗格
    9. LayoutDocumentPane的容器。通过设置Orientation 属性,用于管理多个文档窗格的浮动方向。
    10. LayoutAnchorable:可停靠内容类,一般放置在LayoutAnchorablePane中,其内容可以是用户自定义控件类型,比如,在UserControl中设置好WPF基础控件布局,然后将整个UserControl放置在LayoutAnchorable中,这样,整个UserControl内容就可以随着可停靠控件一起浮动或者停靠。
    11. LayoutDocument:文档类,与LayoutAnchorable功能类似,区别在于LayoutDoucument会随着LayoutDocumentPane一起占满窗体剩余空间。
    12. 我们主要关心和使用最多就是这两个LayoutAnchorable LayoutDocument
    13. Demo使用最新稳定版4.72.0
  2. 那些场景可能需要它?
    1. 我思考有以下几个场景,IDE开发,大型复杂主页,一个窗口需要展示很多个绘图界面
  3. 怎么获取它?

     直接在VS里面工具=》NuGet包管理器=》管理解决方案的NuGet程序包=》浏览搜索下载

  4. 怎么正确使用它?

    1. 在xaml中添加命名空间xmlns:ad="https://github.com/Dirkster99/AvalonDock"
    2. 新建DockingManager-》LayoutRoot-》LayoutPanel-》LayoutAnchorablePane/LayoutDocumentPaneGroup-》LayoutAnchorablePane/LayoutDocumentPane-》LayoutAnchorable/LayoutDocument看代码有手就会
    3. 想要在一个窗格或文档中添加更多空间可以使用UserControl用户控件添加,需要用grid包起来
    4. 在viewModel中添加一些业务逻辑,我这里是添加一个按钮,触发不断绘图,测试窗格最大化性能
  5. 性能怎样?
    1. 在文字信息显示还是很非常优秀,但是如果绘图点过多或画面尺寸比较大,会很吃内存,我只画了1000个点就很卡了,建议限制显示最大尺寸以满足业务需求
  6. 代码仓库?
    1. WPF-AvalonDock-Demo: WPF 基于Prism框架 使用AvalonDock (gitee.com)

http://chatgpt.dhexx.cn/article/gqyf5oJZ.shtml

相关文章

WPF 第三方控件学习使用——可停靠布局控件(AvalonDock)

需求 近期在做公司上位机产品规划与实验,参考了Blender软件的布局风格,希望能用WPF也做一个类似布局的上位机。于是开始寻找资源,很快就发现了AvalonDock。 AvalonDock简介 AvalonDock是Xceed公司 Wpf.Toolkit 中的一款收费产品&#xff0…

wpf-AvalonDock基础-安装和更换主题

2022/7/29更新:去掉标题行的钉子 在LayoutAnchorable上添加属性: CanAutoHide"False" CanClose"False"如果要去掉X,再添加 CanHide"False"最近对wpf的多窗口排列问题深感头疼,算尺寸、位置太麻烦…

AvalonDock使用(1)-基本用法

AvalonDock的基本用法 介绍AvalonDock库中的基本类DockingManager:停靠管理器类LayoutRoot : 布局根节点类LayoutPanel:布局面板类LayoutAnchorablePane:可停靠窗格类LayoutAnchorable:可停靠内容类 LayoutDocumentPane:文档窗格类LayoutDocu…

十进制-75在计算机中,十进制数75转换成二进制数是多少?

75转换成二进制是:1001011。 75/237......1 37/218......1 18/29.........0 9/24...........1 4/22...........0 2/21...........0 从下往上读余数,就是整数部分的案1001011。拓展资料: 十进制整数转换为二进制整数方法: 十进制整…

二进制数的算术运算

2, 二进制数的算术运算 2.1 二进制数的算术运算 二进制数的算术运算包括加法、减法、乘法和除法。 1)加法运算 加法进位规则:逢二进一。 加法运算法则: 000 01101 1110(向高位进位) 例:(1101)2(1011)2?,解算如下: 从执行加法的过程可知&…

二进制数与十进制数的相互转换、二进制数的乘除运算、移位运算

二进制数与十进制数的转换 聊二进制数的运算前,我们先看看二进制数的值与十进制数的值是如何相互转换的, 十进制转换成二进制 将十进制数除以2,得到的商再除以2,依次类推直到商为1时为止,然后在旁边标出各步的余数&am…

计算机组成原理 二进制数的运算

1、算数运算 (1)加法运算 二进制加法法则为: 000 10011 110(向邻近高位有进位) 1111(向邻近高位有进位) (2)减法运算 二进制减法法则为: 0-00 1-10 1-01 0-1…

将输入的十进制数转换成二进制数

软件:DEV,语言:C语言。 声明:本案例只考虑了整数(即int型),故无法进行小数之间的转换(例如float型,double型)。 十进制整数转换为二进制整数采用"除2取…

二进制数表示法

二进制数表示法 二进制数是数字电路中应用最广泛的一种数值表示方法,在逻辑代数中也经常使用。 1、十进制数 在这种计数进位制中,每一位用0~9十个数字来表示,所以计数基数是十。超过9的数则需用多位数表示,其中低位数和相邻高位…

c语言程序10进制转2进制,C语言十进制数转换为二进制数

这是一个C语言 do while 循环示例:统计十进制正整数 n 转换为二进制数后,其二进制序列中包含的 1 和 0 的个数。 问题分析 输入:一个正整数。 输出:两个整数:1 的个数和 0 的个数。 将十进制数 n 转换成二进制数,一般采用“除 2 取余,倒序输出”的方法。 本题只是统计转…

二进制转十进制c++语言数组,C++实现读入二进制数并转换为十进制输出

C++实现读入二进制数并转换为十进制输出 题目描述 已知一个只包含0和1的二进制数,长度不大于10,将其转换为十进制并输出。 输入描述 输入一个二进制整数n,其长度不大于10 输出描述 输出转换后的十进制数,占一行 样例输入 110 样例输出 6 solution: 很多学过C初学C++的人可…

二进制数的加法步骤解析

文章目录 位运算二进制数加法步骤例子代码演示 二进制的加法需要用到位运算,所以先来复习下位运算。 位运算 运算符号(java)描述位与&都为1,结果为1,否则为0。位或|有一个为1或两个位都为1,则结果为1,否则为0。换…

二进制数及其运算

计算机的底层都是使用二进制数据进行数据流传输的,那么为什么会使用二进制表示计算机呢?什么是二进制数呢?如何使用二进制进行加减乘除?二进制数如何表示负数呢?本文将为你揭晓。 为什么用二进制表示 计算机内部是由I…

二进制数的运算

文章目录 前言一、加法运算规则二、减法运算规则三、乘法运算规则四、除法运算规则五、逻辑或运算规则六、逻辑与运算规则七、逻辑非运算规则八、逻辑异或运算规则 前言 此篇文章仅介绍二进制数的运算,不涉及其他进制的运算 一、加法运算规则 000 011 101 110 &…

什么是二进制数?二进制数是如何表示计算机信息的?

二进制是什么? 想要了解二进制数是如何表示计算机信息的?先要追本溯源, 二进制(binary)在数学和数字电路中指以2为基数的记数系统,以2为基数代表系统是二进位制的。这一系统中,通常用两个不同的…

二进制

博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): 二进制 二进制和十进制间小数怎么转换 二进制进位 前言: 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的…

二进制(bit)整数

计算机以电子电荷集合的形式在内存中保存指令和数据。用数字来表示这些内容就需要系统能够适应开 / 关(on/off)或真 / 假(true/false)的概念。 二进制数(binary number)用 2 个数字作基础,其中每一个二进制数字(称为位,bit)不是 0 就是 1。 位自右向左,从 0 开始顺…

计算机基础(一):二进制详解

二进制 我们都知道,计算机的底层都是使用二进制数据进行数据流传输的,那么为什么会使用二进制表示计算机呢?或者说,什么是二进制数呢?在拓展一步,如何使用二进制进行加减乘除?二进制数如何表示…

图论学习笔记——可达矩阵

设有向图D (V,E),顶点集V {v1,v2,,vn}。 定义矩阵 为(当vi到vj不可达时,p为0;当vi到vj可达时p为1.) 称矩阵P是图D的可达矩阵 一般地,设n阶有向图D的邻接…