如何将MAUI新建窗口设置为始终置顶
MAUI 实现浮动窗口始终置顶主窗口之上
MAUI支持多窗口功能,要让新建的浮动窗口始终显示在主窗口上方,需要针对不同平台做特定处理,以下是各平台的实现方案:
各平台置顶实现代码
Windows平台
通过获取WinUI窗口句柄,设置IsAlwaysOnTop属性实现置顶:
#if WINDOWS using Microsoft.UI.Windowing; using WinRT.Interop; // 在调用OpenWindow后添加以下代码 var hwnd = WindowNative.GetWindowHandle(CurrentFloatingWindow); var appWindow = AppWindow.GetFromWindowId(Win32Interop.GetWindowIdFromWindow(hwnd)); appWindow.IsAlwaysOnTop = true; #endif
Android平台
需要获取Android窗口对象,添加AlwaysOnTop标记,同时注意申请权限:
#if ANDROID using Android.Views; // 打开窗口后执行以下代码 var androidWindow = CurrentFloatingWindow.Handler.PlatformView as Android.App.Window; if (androidWindow != null) { androidWindow.AddFlags(WindowManagerFlags.AlwaysOnTop); } #endif
注意:Android需要在AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
并且需要在运行时动态请求该权限。
iOS平台
通过设置UIWindow的WindowLevel为高于普通窗口的级别来实现置顶:
#if IOS using UIKit; // 打开窗口后执行以下代码 var iosWindow = CurrentFloatingWindow.Handler.PlatformView as UIWindow; if (iosWindow != null) { iosWindow.WindowLevel = UIWindowLevel.Alert + 1; // 级别高于系统弹窗,确保置顶 } #endif
用户原始窗口创建代码
Window CurrentFloatingWindow = new() { Page = new NewPage(); }; Application.Current.OpenWindow(CurrentFloatingWindow);
内容的提问来源于stack exchange,提问作者Patrick Molatuoa
相关产品推荐
相关产品推荐

