AvalonDock使用(1)-基本用法

article/2025/9/25 0:28:03

AvalonDock的基本用法

    • 介绍
    • AvalonDock库中的基本类
        • DockingManager:停靠管理器类
        • LayoutRoot : 布局根节点类
        • LayoutPanel:布局面板类
          • LayoutAnchorablePane:可停靠窗格类
            • LayoutAnchorable:可停靠内容类
          • LayoutDocumentPane:文档窗格类
            • LayoutDocument:文档类
          • LayoutAnchorablePaneGroup:可停靠窗格组类
          • LayoutDocumentPaneGroup:文档窗格组类
      • 小结
    • 具体的用法
          • 1. 通过Nuget添加 AvalonDock控件
          • 2. 引用命名空间
          • 3. 添加布局面板
          • 4. 运行效果

介绍

AvalonDock 是一个开源项目,用于创建可停靠式布局,能够在WPF中方便开发出类似VS2010的软件界面。

下载地址:http://avalondock.codeplex.com/releases/view/107371
AvalonDock效果截图
在这里插入图片描述

AvalonDock库中的基本类

AvalonDock库中提供了一些基本的类,熟悉这些类的功能是使用AvalonDock的第一步。

DockingManager:停靠管理器类

DockingManage是AvalonDock中的核心控件之一,负责管理浮动窗体、布局存储、恢复,样式主题等。在XAML中,是AvaDock元素的根节点。

LayoutRoot : 布局根节点类

LayoutRoot 是DockingManager中的内容控件完全占满DockingManager中的空间。
LayoutRoot属性:LeftSide,RightSide,TopSide,BottomSide,分别用于展示DockingManager中左右上下四个位置的内容,但初始状态为隐藏状态。
FloatingWindows,Hidden分别为浮动窗体集合和隐藏窗体集合。当一个窗格浮动时,AvalonDock会将其从其所在组中删除,然后放置到FloatingWindows集合中。当一个窗格关闭时,会将其放置在Hidden集合中。

LayoutPanel:布局面板类

LayoutPanel是LayoutRoot中的内容控件,完全占满LayoutRoot中的空间;在LayoutPanel中,可以有多个LayoutGroup;
LayoutPanel可以设定Orientation 属性,控件布局组的浮动方向。实际的窗格都位于LayoutPanel节点下。

LayoutAnchorablePane:可停靠窗格类

可浮动窗格是可停靠控件LayoutAnchorable的容器。
一个窗格中,可以有多个可停靠控件。浮动窗格中的可停靠控件只能是LayoutAnchorable.窗格大小设定后,不能自动改变。

LayoutAnchorable:可停靠内容类

一般放置在LayoutAnchorablePane中,其内容可以是用户自定义控件类型,比如,在UserControl中设置好WPF基础控件布局,然后将整个UserControl放置在LayoutAnchorable中,这样,整个UserControl内容就可以随着可停靠控件一起浮动或者停靠。

LayoutDocumentPane:文档窗格类

与LayoutAnchorablePane类似,也是可停靠控件的容器; 文档窗格类中可以放置可停靠控件LayoutAnchorable,也可以放置文档控件LayoutDocument;
LayoutDocunemtPane会自动占满窗体的窗体布局中的剩余空间。

LayoutDocument:文档类

与LayoutAnchorable功能类似,区别在于LayoutDoucument会随着LayoutDocumentPane一起占满窗体剩余空间。

LayoutAnchorablePaneGroup:可停靠窗格组类

LayoutAnchorablePaneGroup是可停靠窗格LayoutAnchorablePane的容器。通过设置Orientation 属性,用于管理多个可停靠窗格的浮动方向。

LayoutDocumentPaneGroup:文档窗格组类

LayoutDocumentPaneGroup是文档窗格LayoutDocumentPane的容器。通过设置Orientation 属性,用于管理多个文档窗格的浮动方向。

小结

其实AvalonDock中的类有着明显的层次结构,就是容器的嵌套。DockingManager作为顶层容器,然后包含一个LayoutRoot对象,LayoutRoot中又包含一个LayoutPanel对象。LayoutPanel中便是LayoutAnchroablePane对象和LayouDocumentPane对象的集合。同时,可以对LayoutAnchroablePane对象和LayouDocumentPane对象进行分组,每个组可以单独设定组内的浮动方向。LayoutAnchorablePane又是LayoutAnchorable的容器,LayioutDocumanePane又是LayoutDocument的容器。一层一层进行嵌套,在最后的LayoutAnchorable中或者LayoutDocument中,我们放入我们真正的控件对象,这样,就可以对他们进行分类摆放布局

具体的用法

下面介绍具体的用法。

1. 通过Nuget添加 AvalonDock控件

在这里插入图片描述
在这里插入图片描述

2. 引用命名空间
 xmlns:AvDock="http://schemas.xceed.com/wpf/xaml/avalondock"
3. 添加布局面板
        <AvDock:DockingManager><AvDock:LayoutRoot><AvDock:LayoutPanel Orientation="Horizontal"><AvDock:LayoutAnchorablePaneGroup x:Name="LeftPanels"><AvDock:LayoutAnchorablePane DockWidth="100"></AvDock:LayoutAnchorablePane><AvDock:LayoutAnchorablePane DockWidth="200" x:Name="LeftPanel1"><AvDock:LayoutAnchorable x:Name="LeftPanel1Region" Title="LeftPanel1Region"></AvDock:LayoutAnchorable></AvDock:LayoutAnchorablePane></AvDock:LayoutAnchorablePaneGroup><AvDock:LayoutAnchorablePaneGroup x:Name="RightPanels"><AvDock:LayoutAnchorablePane DockWidth="300" x:Name="RightPanel1"><AvDock:LayoutAnchorable x:Name="RightPanel1Region" Title="RightPanel1Region"></AvDock:LayoutAnchorable></AvDock:LayoutAnchorablePane></AvDock:LayoutAnchorablePaneGroup></AvDock:LayoutPanel></AvDock:LayoutRoot></AvDock:DockingManager>
4. 运行效果

在这里插入图片描述
在这里插入图片描述


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

相关文章

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

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

二进制数的算术运算

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

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

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

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

1、算数运算 &#xff08;1&#xff09;加法运算 二进制加法法则为&#xff1a; 000 10011 110&#xff08;向邻近高位有进位&#xff09; 1111&#xff08;向邻近高位有进位&#xff09; &#xff08;2&#xff09;减法运算 二进制减法法则为&#xff1a; 0-00 1-10 1-01 0-1…

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

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

二进制数表示法

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

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++的人可…

二进制数的加法步骤解析

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

二进制数及其运算

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

二进制数的运算

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

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

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

二进制

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

二进制(bit)整数

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

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

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

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

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

传递闭包和可达矩阵的关系?

今天的这篇博客让我沉思了好久~~~ 传递闭包矩阵的定义如下所示&#xff1a; 可达矩阵的定义如下图所示&#xff1a; 通过以上两个图片可以看出这两个定义有所区别&#xff0c;这篇博客所讲解的就是传递闭包和可达矩阵的关系&#xff1f;这是为什么呢&#xff1f;传递闭包定义为…

用java不带权有向图求可达矩阵_ISM算法(邻接矩阵求可达矩阵)Java实现

图如下: package com;public class Main {public static void main(String[] args) {// 邻接矩阵int adjacency[][] { { 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 0 }, { 1, 0, 0, 1, 0 }, { 0, 0, 1, 0, 1 },{ 1, 0, 0, 0, 0 } };// 可达矩阵int reachability[][] null;System.out.p…

【有限马尔科夫链状态分解+Kosaraju 算法】基于Kosaraju 算法和可达矩阵的有限马尔科夫链状态分解

有限马尔科夫链状态分解Kosaraju 算法 1 实验内容2 理论基础3 题目分析4 按常返性和互通性对状态空间进行分解算法流程4.1 强连通性和强连通分量4.2 基于有向图 Kosaraju 算法的有限马尔科夫链状态分解4.3 算法正确性证明4.4 算法复杂度分析 5 按周期对不可约闭集进行分解6 对例…