MAUI windows 隐藏标题栏

请问,MAUI windows 可以完美隐藏标题栏吗?不修改应用生命周期的情况下完成

var builder = MauiApp.CreateBuilder();
builder.UseMauiApp<App>()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
        })
        .ConfigureLifecycleEvents(events =>
         {

#if WINDOWS
        events.AddWindows(windows => windows
        .OnWindowCreated(window =>
                      {
                          //window.SizeChanged += OnSizeChanged;
                          MauiWinUIWindow mauiwin = window as MauiWinUIWindow;
                          if (mauiwin == null) { return; }
                          
                          //关闭扩展内容
                          mauiwin.ExtendsContentIntoTitleBar = false;
                          mauiwin.Title = "Hello Maui";
                          
                          
                          通过maui窗口句柄获取appwindow---
                          ///这里有个操蛋的东西我用最新版新建的工程没法直接getappwindow所以用了文章里的方法
                          var wndId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(mauiwin.WindowHandle);
                          Microsoft.UI.Windowing.AppWindow appwin = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(wndId);

                          //对于OverlappedPresenter的解释文档在这个网址
                          //https://learn.microsoft.com/zh-tw/windows/windows-app-sdk/api/winrt/microsoft.ui.windowing.overlappedpresenter?view=windows-app-sdk-1.2
                          
                          //大致就是OverlappedPresenter会设置这个窗口,这个窗口可以和其他窗口重叠,并对窗口标题栏 状态栏 工作栏进行设置,以及其他一些调整窗口的操作
                          var customOverlappedPresenter = Microsoft.UI.Windowing.OverlappedPresenter.CreateForContextMenu();
                          appwin.SetPresenter(customOverlappedPresenter);
                      }));    
#endif
            });

        return builder.Build();


https://blog.csdn.net/Sir_aligaduo/article/details/128880940

引用chatGPT作答,MAUI(Multi-platform App UI)是一个用于跨平台应用程序开发的框架,它基于 .NET 和 C# 编程语言,旨在为多种操作系统提供一致的用户界面和功能。MAUI 框架本身不提供隐藏标题栏的功能,这是由操作系统提供的窗口管理器来处理的。因此,MAUI 应用程序无法直接控制窗口的外观和行为。

在 Windows 系统中,可以通过设置窗口样式(Window Style)来隐藏标题栏。但是,这需要在应用程序的生命周期中进行相应的处理。如果你不想修改应用程序生命周期的情况下实现隐藏标题栏,可以考虑使用第三方库或框架来实现这个功能。

有一些第三方库和框架可以帮助你在 MAUI 应用程序中隐藏标题栏,例如 Avalonia UI 和 Uno Platform。这些库和框架提供了跨平台的窗口管理器,可以让你在 MAUI 应用程序中自由控制窗口的外观和行为,包括隐藏标题栏。你可以在这些库和框架的文档中查找更多信息,并决定是否使用它们来满足你的需求。

以下是一个在 Windows 上使用 Avalonia UI 库实现隐藏标题栏的示例代码:

using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

public class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        // 设置窗口样式为 WS_POPUP,隐藏标题栏和边框
        this.WindowStyle = WindowStyle.None;
        this.ExtendClientAreaToDecorationsHint = true;
        this.TransparencyLevelHint = WindowTransparencyLevel.AcrylicBlur;
        this.Background = new SolidColorBrush(Colors.Transparent);
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}

在上面的代码中,我们创建了一个名为 MainWindow 的窗口,并在构造函数中设置了窗口的样式,从而隐藏了标题栏和边框。具体来说,我们将 WindowStyle 属性设置为 WindowStyle.None,这将窗口样式设置为无边框窗口;然后设置 ExtendClientAreaToDecorationsHint 属性为 true,以确保客户区填满整个窗口;最后设置 TransparencyLevelHint 属性为 WindowTransparencyLevel.AcrylicBlur,以实现模糊效果,并将窗口背景设置为透明。这样,我们就成功地隐藏了窗口的标题栏和边框。