MAUI Blazor (Windows) App 动态设置窗口标题

news/2024/11/29 23:30:18/

原文链接 https://www.cnblogs.com/densen2014/p/16950996.html

接着上一篇"如何为面向 Windows 的 MAUI Blazor 应用程序设置窗口标题?"

Tips: 总所周知,MAUI 除了 Windows App 其他平台窗口是没有 Title 这回事的.

在 Blazor 里面可以直接给页面打上 <PageTitle>MauiApp7test</PageTitle> 动态设置页面标题,在 Windows 的 MAUI Blazor 应用程序设置是没有效果的,因为这个只是设置了 BlazorWebView 控件的标题,并不是真正的窗口标题, 接着上一篇的知识改造一下动态设置标题:

工程文件 Platforms -> Windows -> App.xaml.cs
using Microsoft.UI;
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
using WinRT.Interop;
...
namespace MauiApp7test.WinUI
{public partial class App : MauiWinUIApplication{public static object CurrentWindow;public static AppWindow AppWindow;protected override void OnLaunched(LaunchActivatedEventArgs args){base.OnLaunched(args);CurrentWindow = Application.Windows[0].Handler?.PlatformView;IntPtr _windowHandle = WindowNative.GetWindowHandle(CurrentWindow);var windowId = Win32Interop.GetWindowIdFromWindow(_windowHandle);AppWindow = AppWindow.GetFromWindowId(windowId);SetTitle("MauiApp7test");}public static void SetTitle(string title) => AppWindow.Title = title;protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();}
}

页面文件 Pages ->PagesIndex.razor

@code {protected override void OnAfterRender(bool firstRender){if (firstRender){
#if WINDOWSWinUI.App.SetTitle("MauiApp7test - Index");
#endif }}
}

页面文件 FetchData.razor

@code {private WeatherForecast[] forecasts;protected override async Task OnInitializedAsync(){
#if WINDOWSWinUI.App.SetTitle("MauiApp7test - Fetchdata");
#endifforecasts = await ForecastService.GetForecastAsync(DateTime.Now);}
}

运行效果

总结

MAUI 还是一个新鲜事物,在官方还没支持的一些骚操作的情况下多发散思维,总能填坑的.

标题设置这里只是写了个方法去设置,也可以写成接口各平台实现,注入服务方式调用,理论上会更加通用一点.

项目源码

Github | Gitee

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名AlexChow(包含链接: https://github.com/densen2014 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系 。

AlexChow

今日头条 | 博客园 | 知乎 | Gitee | GitHub

image


http://www.ppmy.cn/news/1540.html

相关文章

阿里云部署应用

安装jdk 查看已安装版本 rpm -qa | grep java yum命令查找JDK1.8软件包 yum -y list java-1.8* 安装列表中的JDK1.8软件包 yum -y install java-1.8.0-openjdk-devel.x86_64 java -version 配置环境变量 vim /etc/profile JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.…

Linux-性能分析常用工具

stress stress 是一个 Linux 系统压力测试工具&#xff0c;这里我们用作异常进程模拟平均负载升高的场景。 stress --cpu 1 --timeout 600 # 拟一个 CPU 使用率 100% 的场景 stress -i 1 --timeout 600 #模拟 I/O 压力&#xff0c;即不停地执行 sync stress -c 8 --timeou…

Java多线程同步工具类:Semaphore原理剖析

Java多线程同步工具类&#xff1a;Semaphore原理剖析 文章目录Java多线程同步工具类&#xff1a;Semaphore原理剖析Semaphore原理实战案例前驱知识准备&#xff1a;AbstractQueuedSynchronizer队列同步器 [Java多线程之&#xff1a;队列同步器AbstractQueuedSynchronizer原理剖…

数据结构栈的实现

目录栈的概念栈的结构声明初始化数据入栈出栈判断栈是否为空取栈顶的值销毁栈栈的概念 栈是一种线性表&#xff0c;插入数据的一端叫栈顶&#xff0c;另一端叫栈底。 入栈&#xff1a;数据从栈顶进入栈中 出栈&#xff1a;数据从栈顶删除 所以&#xff0c;栈的特点就是先进后出…

IDEA创建Java Web项目

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;JAVA开发者…

微机-------CPU与外设之间的数据传送方式

目录 一、无条件方式二、查询方式三、中断方式四、DMA方式一、无条件方式 外设要求:简单、数据变化缓慢。 外设被认为始终处于就绪状态。始终准备好数据或者始终准备好接收数据。 IN AL,数据端口 数据端口的地址通过CPU的地址总线送到地址译码器进行译码,同时该指令进行的是…

内存优化之重新认识内存

我们知道&#xff0c;手机的内存是有限的&#xff0c;如果应用内存占用过大&#xff0c;轻则引起卡顿&#xff0c;重则导致应用崩溃或被系统强制杀掉&#xff0c;更严重的情况下会影响应用的留存率。因此&#xff0c;内存优化是性能优化中非常重要的一部分。但是&#xff0c;很…

Clickhouse 使用DBeaver连接

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 据处理大致可以分成两大类&#xff1a;联机事务处理OLTP&#xff08;on-line transaction processing&#xff09;、联机分析处理OLAP&#xff08;On-Line Analytical Processing&#xff09;。 OLTP是传统的…