如何为面向 Windows 的 MAUI Blazor 应用程序设置窗口标题?
Posted
技术标签:
【中文标题】如何为面向 Windows 的 MAUI Blazor 应用程序设置窗口标题?【英文标题】:How to set window title for a MAUI Blazor App targeting Windows? 【发布时间】:2022-01-12 10:35:22 【问题描述】:我在 MAUI 预览版 10 中从 MAUI Blazor 应用程序模板创建了一个小型应用程序,并将其定位并在 Windows 上运行。然而,我希望设置应用程序的标题,我想象将使用 MainPage.xaml ContentPage 标记中的 Title 属性来完成。然而,这在启动应用程序时没有任何作用。
【问题讨论】:
由于移动设备没有窗口标题,如果有办法设置它,可能在Platforms/Windows/App.xaml.cs
。 (不要与根文件夹中的 other App.xaml.cs
混淆。)我没有看到获取底层WinUI 3 window
的内置方法 - 这是标题需要的地方被设置。这可能是一个尚未实现的细节。
【参考方案1】:
在 Platforms -> Windows 下的 App.xaml.cs 中,可以通过一些反射使用来检索 AppWindow。然后可以在 appwindow 实例上设置 Title 属性。
using Microsoft.UI;
using Microsoft.UI.Windowing;
using System;
using WinRT.Interop;
.
.
.
protected override void OnLaunched(LaunchActivatedEventArgs args)
base.OnLaunched(args);
Microsoft.Maui.Essentials.Platform.OnLaunched(args);
var currentWindow = Application.Windows[0].Handler.NativeView;
IntPtr _windowHandle = WindowNative.GetWindowHandle(currentWindow);
var windowId = Win32Interop.GetWindowIdFromWindow(_windowHandle);
AppWindow appWindow = AppWindow.GetFromWindowId(windowId);
appWindow.Title = "Title!";
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 我试过你的代码,虽然它没有解决设置标题的问题,但它确实提取了允许我最后设置标题的 appwindow。我会尽快编辑答案,然后我会设置为答案。 在Application.Windows[0].Handler.NativeView中找到WinUi3的窗口,不使用反射,类型为Microsoft.Maui.MauiWinUIWindow以上是关于如何为面向 Windows 的 MAUI Blazor 应用程序设置窗口标题?的主要内容,如果未能解决你的问题,请参考以下文章
用 MAUI 在Windows 和 Linux 绘制 PPT 图表
MAUI与Blazor共享一套UI,媲美Flutter,实现WindowsmacOSAndroidiOSWeb通用UI