You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI中MainDisplayInfoChanged事件调用不一致问题

MAUI特定页面屏幕旋转事件触发异常问题

问题背景

此问题为Stack Overflow相关问题的延续,需求是在MAUI应用的特定视图中,支持设备旋转时自动切换横屏布局,实现特定页面重新启用自动旋转功能。

当前实现代码

目前通过页面的OnAppearing和OnDisappearing方法控制Android平台的屏幕方向:

object SOToRestore {  get; set; }

protected override void OnAppearing()
{
    base.OnAppearing();

#if ANDROID
SOToRestore = Microsoft.Maui.ApplicationModel.Platform.CurrentActivity.RequestedOrientation;
Microsoft.Maui.ApplicationModel.Platform.CurrentActivity.RequestedOrientation = Android.Content.PM.ScreenOrientation.Landscape;
#endif
}

protected override void OnDisappearing()
{
    base.OnDisappearing();

#if ANDROID
    if (SOToRestore is Android.Content.PM.ScreenOrientation SO) Microsoft.Maui.ApplicationModel.Platform.CurrentActivity.RequestedOrientation = Android.Content.PM.ScreenOrientation.Portrait;
#endif
}

异常现象

期望通过MainDisplayInfoChanged事件响应屏幕旋转,更新视图内容,但存在特定场景下事件不触发的问题:

  • 当设备处于侧放状态但前一视图为竖屏时,打开目标视图,视图成功旋转为横屏,但MainDisplayInfoChanged事件未被调用。
  • 该问题仅在返回前一页后再次打开目标视图时出现,首次加载不会触发。
  • 经确认,MainDisplayInfo实际已变更:OnAppearing中打印为竖屏(Portrait),页面加载完成后手动点击按钮打印为横屏(Landscape),但期间事件未触发。

复现步骤

  • 启动应用,将手机/模拟器转为横屏模式,此时应用处于侧放状态;
  • 点击按钮打开响应式视图,屏幕正确旋转,标签显示Landscape模式;
  • 点击返回按钮,点击查询按钮确认当前视图Orientation为Portrait;
  • 再次点击按钮打开响应式视图,此时标签显示Portrait,但Orientation实际为Landscape,且MainDisplayInfoChanged全程未触发。

补充尝试

尝试在前一视图设置RequestedOrientation后再导航至目标视图,问题仍未解决,推测是MainDisplayInfo.Orientation被强制设置但未触发对应事件。


内容的提问来源于stack exchange,提问作者GChapX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:33:26