你可以采取三种方法来解决这个问题......
1:难的是,你要做的是修改由Windows控制的非客户区。
缺点是这只能通过 Windows 的内核方法实现,而且您使用的是 .NET,而不是 C/C++。但是,P/Invoke
我们可以使用。实际上,整个 Windows 窗体 UI 和控制台应用程序 I/O 方法都是作为在后台进行系统调用的包装器提供的。因此,如 MSDN 中所述,完全可以使用P/Invoke
来访问设置非客户区所需的那些方法。
如前所述,这是一个“比当前需要的更难”的解决方案。
2:更简单的一种,用 XAML 制作自己的标题栏
幸运的是,从 .NET 4.5 开始,您可以使用WindowChrome
该类在一定程度上根据您的需要调整非客户区,您可以将其设置WindowStyle
为无,并且可以为您的应用程序添加一个自定义标题栏,该标题栏可以具有您喜欢的任何颜色,并且可能看起来像 Windows 或其他操作系统的标题栏
要开始使用,WindowChrome
您可以转到以下文章WindowChrome 类和WindowChrome 实验。
你的代码的基础就在下面<Window [...]>
<WindowChrome.WindowChrome>
<WindowChrome
CaptionHeight="0"
ResizeBorderThickness="5" />
</WindowChrome.WindowChrome>
并确保添加WindowStyle="None"
以删除标题栏及其组件
3:最简单的一种,使用第三方库。
您还可以使用第三方组件系统,例如用于 WPF 的MahApps.Metro 。据我所知,您应该能够自定义标题栏颜色。
最终结果可能如下所示: