【发布时间】:2022-11-04 15:31:51
【问题描述】:
我实际上正在开发一个在 Windows 上工作的 Maui Blazor 项目,对于这个项目,我创建了一个自定义顶部栏,其中包含一些按钮等......(见下图 2)。
但我想知道如何删除默认窗口栏(参见图片上的 1)。我没有找到可以满足此目的的属性(WPF 除外)。
有小费吗?
谢谢你。
问候,萨米。
【问题讨论】:
标签: windows user-interface window blazor maui
我实际上正在开发一个在 Windows 上工作的 Maui Blazor 项目,对于这个项目,我创建了一个自定义顶部栏,其中包含一些按钮等......(见下图 2)。
但我想知道如何删除默认窗口栏(参见图片上的 1)。我没有找到可以满足此目的的属性(WPF 除外)。
有小费吗?
谢谢你。
问候,萨米。
【问题讨论】:
标签: windows user-interface window blazor maui
这可以通过将SetBorderAndTitleBar(Boolean, Boolean) 设置为false 然后将ExtendsContentIntoTitleBar 设置为false 来实现。请使用MauiProgram.cs,如下所示:
using MauiApp13blazor.Data;
using Microsoft.Maui.LifecycleEvents;
#if WINDOWS
using Microsoft.UI;
using Microsoft.UI.Windowing;
using Windows.Graphics;
#endif
namespace MauiApp13blazor;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
})
.ConfigureLifecycleEvents(events =>
{
#if WINDOWS
events.AddWindows(wndLifeCycleBuilder =>
{
wndLifeCycleBuilder.OnWindowCreated(window =>
{
IntPtr nativeWindowHandle = WinRT.Interop.WindowNative.GetWindowHandle(window);
WindowId nativeWindowId = Win32Interop.GetWindowIdFromWindow(nativeWindowHandle);
AppWindow appWindow = AppWindow.GetFromWindowId(nativeWindowId);
var p = appWindow.Presenter as OverlappedPresenter;
window.ExtendsContentIntoTitleBar = false;
p.SetBorderAndTitleBar(false, false);
});
});
#endif
});
builder.Services.AddMauiBlazorWebView();
#if DEBUG
builder.Services.AddBlazorWebViewDeveloperTools();
#endif
builder.Services.AddSingleton<WeatherForecastService>();
return builder.Build();
}
}
【讨论】: