如何为面向 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窗体设置

用 MAUI 在Windows 和 Linux 绘制 PPT 图表

MAUI与Blazor共享一套UI,媲美Flutter,实现WindowsmacOSAndroidiOSWeb通用UI

如何为mysql xampp,windows设置默认排序规则

Java 并发是如何为 Windows 实现的? [关闭]

如何为 SQLCMD 使用 Windows 用户?