1 启用WindowChrome
添加如下代码(第9行、10行):
<Window x:Class="Test.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:Test"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<WindowChrome.WindowChrome>
</WindowChrome.WindowChrome>
<Grid/>
</Window>
启用WindowChrome后,窗口会变为无边框的窗口。此时窗口的尺寸与设计器中设定的尺寸一致。
**
2 WindowChrome参数
参数填写语法:
<WindowChrome.WindowChrome>
<WindowChrome
CaptionHeight="20"
GlassFrameThickness="20"
NonClientFrameEdges="Top"
ResizeBorderThickness="20"
UseAeroCaptionButtons="False"/>
</WindowChrome.WindowChrome>
2.1 CaptionHeight
官方文档:
Double类型。标题栏区域(不可见)的高度,从顶部边缘向下计算。
2.2 GlassFrameThickness
官方文档:
Thickness类型。四周边框的尺寸,从窗口边缘向内部计算。
有着多个使用方式:
GlassFrameThickness="-1" <!--边框铺满窗口-->
GlassFrameThickness="10" <!--四周尺寸均为同一值-->
GlassFrameThickness="10,20,30,40" <!--依照左上右下的顺序设定边框尺寸-->
2.3 NonClientFrameEdges
官方文档:
NonClientFrameEdges类型。
暂不清楚具体效果,看起来像是当设置成某个位置时,该位置的边框尺寸将和系统设置的一致。
2.4 ResizeBorderThickness
官方文档:
Thickness类型。窗口四周可以调整窗口尺寸大小的区域(不可见),从窗口边缘向内部计算。
设置该尺寸会影响标题栏区域的位置,调整的边框在标题栏上方。
设置为0时则不可以通过拖拽的方式调整窗口大小。
2.5 UseAeroCaptionButtons
官方文档:
Boolean类型。用于决定边框上的最小化、最大化、还原、关闭按钮是否可以被点击。
3 向标题栏内添加控件
官方文档:
在CaptionHeight区域内的控件,无法被鼠标点击到。这是因为标题栏区域是在最顶层的,因此会挡住这些控件。
如果想要添加一些可以自己用的控件,需要给组件单独添加一个Attribute(第二行):
<Button Content="TestButton" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Top"
WindowChrome.IsHitTestVisibleInChrome="True"/>
此时,鼠标就可以点击到放置在标题栏区域内的控件了。