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

article/2025/9/25 0:26:48

2022/7/29更新:去掉标题行的钉子

在这里插入图片描述
在LayoutAnchorable上添加属性:

CanAutoHide="False" CanClose="False"

如果要去掉X,再添加

CanHide="False"

最近对wpf的多窗口排列问题深感头疼,算尺寸、位置太麻烦了(也可能是我菜鸡的缘故),最后决定用AvalonDock,排列很漂亮。

本篇主要是安装和更换主题,后续会更一篇项目中常用的技巧。

再吐槽一下,AvalonDock的中文资料同质化太严重!!!很多需要自己测试了才能用好(我的环境是win10+vs2019

喜欢的话为我的辛苦点个赞吧!嘤嘤嘤

安装

Avalondock是一个支持mvvm的框架,可以快速开发出类似visual studio的多窗口app。

去 https://archive.codeplex.com/?p=avalondock 下载archive,找到sourceCode.zip,直接进入Version2.0,然后在vs里生成。dll在obj/debug下。拷贝到自己的项目里,引用上。

生成后会得到一个基础dll:
在这里插入图片描述
和几个关于主题的dll:
在这里插入图片描述

主题

Avalondock提供几种主题,也允许你切换。要更换的话,首先把几个dll放到当前项目的引用里:
在这里插入图片描述
下面对同一段xaml代码,大家可以看一下不同的效果:
注意在Window标签里添加这行:xmlns:avalonDock

<Window x:Class="TestAvalon.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:TestAvalon"xmlns:avalonDock="http://schemas.xceed.com/wpf/xaml/avalondock"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><avalonDock:DockingManager x:Name="dockingManager"><avalonDock:LayoutRoot><avalonDock:LayoutPanel Orientation="Horizontal"><avalonDock:LayoutDocumentPaneGroup><avalonDock:LayoutDocumentPane><avalonDock:LayoutDocument Title="Doc1"><TextBox/></avalonDock:LayoutDocument><avalonDock:LayoutDocument Title="Doc2"><TextBox/></avalonDock:LayoutDocument></avalonDock:LayoutDocumentPane><avalonDock:LayoutDocumentPane><avalonDock:LayoutDocument Title="Doc3"><TextBox/></avalonDock:LayoutDocument></avalonDock:LayoutDocumentPane></avalonDock:LayoutDocumentPaneGroup><avalonDock:LayoutAnchorablePaneGroup DockWidth="150" Orientation="Vertical"><avalonDock:LayoutAnchorablePane><avalonDock:LayoutAnchorable Title="Tool 1"><TextBox/></avalonDock:LayoutAnchorable><avalonDock:LayoutAnchorable Title="Tool 2"><TextBox/></avalonDock:LayoutAnchorable></avalonDock:LayoutAnchorablePane><avalonDock:LayoutAnchorablePane><avalonDock:LayoutAnchorable Title="Tool 3"><TextBox/></avalonDock:LayoutAnchorable><avalonDock:LayoutAnchorable Title="Tool 4"><TextBox/></avalonDock:LayoutAnchorable></avalonDock:LayoutAnchorablePane></avalonDock:LayoutAnchorablePaneGroup></avalonDock:LayoutPanel><avalonDock:LayoutRoot.LeftSide><avalonDock:LayoutAnchorSide><avalonDock:LayoutAnchorGroup><avalonDock:LayoutAnchorable Title="Autohidden Content"><TextBox/></avalonDock:LayoutAnchorable></avalonDock:LayoutAnchorGroup></avalonDock:LayoutAnchorSide></avalonDock:LayoutRoot.LeftSide></avalonDock:LayoutRoot></avalonDock:DockingManager></Grid></Window>

后台

public MainWindow()
{InitializeComponent();this.dockingManager.Theme = new AeroTheme();
}

默认风格(不设定Theme)

在这里插入图片描述

AeroTheme

在这里插入图片描述

ExpressionLightTheme

在这里插入图片描述

ExpressionDarkTheme

在这里插入图片描述

MetroTheme

在这里插入图片描述

VS2010风格

在这里插入图片描述


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

相关文章

AvalonDock使用(1)-基本用法

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

十进制-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…