在WPF里,实现自定义窗口标题栏,核心思路就是“自己动手,丰衣足食”。我们通常会先隐藏掉系统自带的标题栏,然后用XAML元素,比如
Grid或者
Border,来构建自己的标题区域,并手动实现拖动、最小化、最大化和关闭这些基本功能。这听起来有点像“搭积木”,但好处是完全的视觉自由,能让你的应用界面风格更统一。
要实现自定义标题栏,我们首先得对
Window的属性动刀。
WindowStyle="None"是第一步,这会把整个系统默认的边框和标题栏都干掉。如果你还想窗口有圆角或者不规则形状,那么
AllowsTransparency="True"也得加上,同时
Background要设为
Transparent。
接下来就是XAML的活儿了。在你的
Window的根
Grid或者其他布局容器里,放一个
Grid或者
DockPanel作为你的自定义标题栏。通常,我会用一个
Grid,里面放一个
TextBlock显示标题,旁边再放几个
Button来做最小化、最大化和关闭。
<Window x:Class="CustomTitleBarApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="我的自定义窗口" Height="450" Width="800"
WindowStyle="None" AllowsTransparency="True" Background="Transparent"
ResizeMode="CanResize"> <!-- 确保窗口可以调整大小 -->
<Border Background="#282C34" CornerRadius="8"> <!-- 整个窗口的背景和圆角 -->
<Grid>
<!-- 自定义标题栏区域 -->
<Grid Height="32" VerticalAlignment="Top" Background="#3E4452" 