WinUI 3 应用程序中的透明标题栏 (Windows 11)

Transparent title bar in WinUI 3 app (Windows 11)

我为 Windows10 开发了一些 UWP 应用程序,我想在使用 WinUi3 开发的新应用程序中将磁贴栏透明化。

如果我试试这个 ExtendsContentIntoTitleBar = true; 最小化、最大化和关闭按钮消失了,我无法在 Window.

中移动应用程序

但在 UWP 中它更简单。我可以毫无问题地将标题栏设置为透明(或与我的应用程序颜色相同),如下所示:

CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
ApplicationViewTitleBar titleBar = ApplicationView.GetForCurrentView().TitleBar;
titleBar.ButtonBackgroundColor = Colors.Transparent;
titleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
titleBar.ButtonForegroundColor = Colors.Black;

在 WinUi3 中可能有类似的东西吗?

根据 Doc:

If you set ExtendsContentIntoTitleBar to true but do not call SetTitleBar, the system title bar is restricted to the caption buttons and a small area next to the caption buttons that is reserved for title bar behaviors. However, your custom title bar element does not get title bar behaviors, such as drag and the system menu, until SetTitleBar is called with a valid UIElement.

通过设置UIElement.Opacity Property的值来设置透明度:

声明不透明度因子的介于 0 和 1.0 之间的值,1.0 表示完全不透明,0 表示透明。默认值为 1.0.

Windows App SDK 团队在 GitHub 中提供了很好的示例。您应该看看 Windowing 示例应用程序。

https://github.com/microsoft/WindowsAppSDK-Samples/tree/main/Samples/Windowing/cs-winui

如果您有兴趣,也可以查看我关于自定义 TitleBar 的视频。

https://youtu.be/rhYdNuBkqtE

更新

我很抱歉路易斯。 Windows App SDK 团队在 GitHub 上的样本似乎只适用于 Windows 11.

Windowing - TitleBar sample - Titlebar always null #116

我确定他们也在努力实现目标 windows 10,但目前,您可能需要按照我在视频中建议的方式进行操作。