Avalonia:在Linux上隐藏标题栏窗口不起作用



我使用avalonia(版本0.10.3,但在Net5.0项目上0.10.0也发生了同样的情况(作为项目的UI,当我创建例如一个splash或about屏幕时,标题栏必须是不可见的。

在窗口上,这与窗口部分的这些参数配合得很好:

CanResize="False"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="NoChrome"
ExtendClientAreaTitleBarHeightHint="0"

不幸的是,在Linux(mint-带有最新更新的最新版本(上,标题栏仍然可见(如果我将ExtendeClientAreaTitleBarHeightHint设置为"-1"(。

这是一个已知的问题还是我做错了什么?

我没有mac,但是mac也是这样吗?

X11使用所谓的"服务器装饰";。窗口框架是由窗口管理器在单独的进程中绘制的,因此实际上不可能扩展到该区域。

您仍然可以完全禁用框架并绘制自己的框架,但通常不建议这样做,因为基本上在每个非基于GNOME的Linux发行版中都会破坏高级窗口交互(GNOME不在乎,因为它没有任何高级窗口交互(。

在未来的某个版本中,Avalonia将为GNOME使用一个自定义绘制的框架,并带有一个配置选项,可以忽略用户的偏好,而为其他桌面环境使用一个外观奇特的窗口边框,但它尚未实现。

这就是在Avalonia 0.10.18 中实现的方法

<Window ...
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="NoChrome"
ExtendClientAreaTitleBarHeightHint="-1"
SystemDecorations="BorderOnly">

注意SystemDecorations="BorderOnly"属性。如果未设置,装饰在Windows上隐藏,但在Linux上不隐藏。

我在相关Avalonia bug的一篇帖子中找到了这个解决方案https://github.com/AvaloniaUI/Avalonia/issues/5829#issuecomment-841700569

我也遇到过类似的问题,但我"解决它";通过将窗口属性定义为:

WindowState = WindowState.FullScreen;

正常最大化相比,全屏中的标题栏仍然隐藏。

最新更新