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();
}