You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows MAUI窗口最大化无法铺满顶部问题求助

.NET MAUI 8.0.0-preview4 全屏最大化窗口残留标题栏空白问题

问题现象

在.NET MAUI 8.0.0-preview4中实现窗口完全最大化时,原标题栏位置仍留有空白栏(红色为页面内容,黑色为残留的标题栏区域):
红色-页面,黑色-标题栏

通过修改MAUI模板,用“Click me”按钮切换窗口最大化状态,代码如下:

private void OnCounterClicked(object sender, EventArgs e)
{
    var window = Window.Handler.PlatformView as MauiWinUIWindow;
    var handle = WinRT.Interop.WindowNative.GetWindowHandle(window);
    var id = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(handle);
    var appWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(id);

    switch (appWindow.Presenter)
    {
        case Microsoft.UI.Windowing.OverlappedPresenter overlappedPresenter:
            if (overlappedPresenter.State == Microsoft.UI.Windowing.OverlappedPresenterState.Maximized)
            {
                overlappedPresenter.SetBorderAndTitleBar(true, true);
                overlappedPresenter.Restore();
            }
            else
            {
                overlappedPresenter.SetBorderAndTitleBar(false, false);
                overlappedPresenter.Maximize();
            }

            break;
    }
}

已移除Shell,直接使用MainPage,但SetBorderAndTitleBar仅移除标题栏按钮,未真正消除标题栏空白,无法实现真正的全屏体验。

解决方法

1. 调整窗口扩展区域与布局边距

修改点击事件代码,结合TitleBar.ExtendsContentIntoTitleBar和设置标题栏高度,同时调整MAUI窗口内容边距:

private void OnCounterClicked(object sender, EventArgs e)
{
    var window = Window.Handler.PlatformView as MauiWinUIWindow;
    var handle = WinRT.Interop.WindowNative.GetWindowHandle(window);
    var id = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(handle);
    var appWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(id);

    switch (appWindow.Presenter)
    {
        case Microsoft.UI.Windowing.OverlappedPresenter overlappedPresenter:
            if (overlappedPresenter.State == Microsoft.UI.Windowing.OverlappedPresenterState.Maximized)
            {
                // 恢复窗口时还原标题栏设置
                overlappedPresenter.SetBorderAndTitleBar(true, true);
                var titleBar = appWindow.TitleBar;
                titleBar.ExtendsContentIntoTitleBar = false;
                overlappedPresenter.Restore();
                window.ContentRoot.Margin = new Microsoft.UI.Xaml.Thickness(0);
            }
            else
            {
                // 最大化时隐藏边框和标题栏,让内容延伸覆盖原标题栏区域
                overlappedPresenter.SetBorderAndTitleBar(false, false);
                var titleBar = appWindow.TitleBar;
                titleBar.ExtendsContentIntoTitleBar = true;
                titleBar.Height = 0;
                overlappedPresenter.Maximize();
                window.ContentRoot.Margin = new Microsoft.UI.Xaml.Thickness(0);
            }
            break;
    }
}

2. 确保页面无默认边距

检查MainPage的XAML,移除默认的Padding和Margin,确保内容铺满窗口:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MaximizeMaui.MainPage"
             Padding="0" Margin="0">
    <!-- 页面内容 -->
</ContentPage>

3. 可选:使用全屏演示者实现彻底全屏

如果需要覆盖任务栏的完全全屏效果,可切换到FullScreenPresenter:

private void OnCounterClicked(object sender, EventArgs e)
{
    var window = Window.Handler.PlatformView as MauiWinUIWindow;
    var handle = WinRT.Interop.WindowNative.GetWindowHandle(window);
    var id = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(handle);
    var appWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(id);

    if (appWindow.Presenter.Kind == Microsoft.UI.Windowing.AppWindowPresenterKind.FullScreen)
    {
        // 退出全屏,还原为普通窗口
        appWindow.SetPresenter(Microsoft.UI.Windowing.AppWindowPresenterKind.Overlapped);
        var overlappedPresenter = (Microsoft.UI.Windowing.OverlappedPresenter)appWindow.Presenter;
        overlappedPresenter.SetBorderAndTitleBar(true, true);
        var titleBar = appWindow.TitleBar;
        titleBar.ExtendsContentIntoTitleBar = false;
    }
    else
    {
        // 切换到全屏模式
        appWindow.SetPresenter(Microsoft.UI.Windowing.AppWindowPresenterKind.FullScreen);
    }
}

内容的提问来源于stack exchange,提问作者Aidan Bailey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:05:34