問題の現象。
Windows 7システムでAvaloniaを使用してカスタムタイトルバーを実装すると、ネイティブタイトルバーを非表示にできない互換性の問題が発生し、インターフェイスが異常に表示されることがあります。

図1:Win7環境でのタイトルバーの異常表示効果
テクニカル分析。
WeChat Avalonia Development Groupの友人の助けに感謝します。

図2:マイクログループの技術交流
Avaloniaフレームワークは、Windowsのバージョンによってウィンドウデコレーションの取り扱いに違いがあります。
- Windows 10/11:モダンなウィンドウスタイルがデフォルトでサポートされ、カスタムタイトルバーはネイティブのタイトルバーを通常通り非表示にします。
- Windows 7 システムcompositorの制限により、システム装飾を明示的に無効にする必要があります。
SystemDecorations属性控制窗口边框和标题栏的显示行为,其枚举值包括:
Full:完整系统装饰(默认值)BorderOnly:仅显示边框None:完全禁用系统装饰ResizeBorder:仅保留可调整大小的边框
解決策は
通过在窗口初始化代码中显式设置SystemDecorations属性为None,可强制隐藏原生标题栏:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// 关键设置:禁用系统装饰以支持自定义标题栏
// 在Windows 7环境下必须显式设置,Win10+可省略
if (OperatingSystem.IsWindows() && !OperatingSystem.IsWindowsVersionAtLeast(6, 2)) // Windows 7及以下
{
SystemDecorations = SystemDecorations.None;
}
}
}
設定すると、以下のようになります。ネイティブタイトルバーは正常に非表示になり、カスタムタイトルバーは正常に表示されます。

図3:修復を適用した後のタイトルブロック表示の効果
Win 7 AOTをサポートするには、NuGetパッケージを追加することを忘れないでください。
<PackageReference Include="YY-Thunks" Version="1.1.8-Beta4" />