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

如何在.NET MAUI的NavigatedToEventArgs中访问PreviousPage属性

.NET MAUI 获取当前页面上一页的解决方案

方法1:利用NavigationStack导航栈

.NET MAUI的NavigationPage维护了页面栈NavigationStack,当前页面的上一页就是栈中倒数第二个元素。在目标页面(如Page2)中可直接读取:

if (Navigation != null && Navigation.NavigationStack.Count >= 2)
{
    var previousPage = Navigation.NavigationStack[Navigation.NavigationStack.Count - 2];
    
    // 根据页面类型处理逻辑
    if (previousPage is Page1)
    {
        // 处理Page1跳转过来的场景
    }
    else if (previousPage is Page3)
    {
        // 处理Page3跳转过来的场景
    }
}

方法2:跳转时传递来源标识

若不想依赖导航栈结构,可在跳转时主动传递来源页面标记:

  • 在Page1中跳转至Page2:
await Navigation.PushAsync(new Page2 { SourcePage = "Page1" });
  • 在Page3中跳转至Page2:
await Navigation.PushAsync(new Page2 { SourcePage = "Page3" });
  • 给Page2添加自定义属性:
public string SourcePage { get; set; }
  • 在Page2中通过属性判断来源:
if (SourcePage == "Page1")
{
    // Page1跳转逻辑
}
else if (SourcePage == "Page3")
{
    // Page3跳转逻辑
}

如果使用MVVM模式,也可将SourcePage放在ViewModel中传递。

方法3:反射访问隐藏的PreviousPage属性

调试时可见的PreviousPage属于非公开属性,可通过反射获取,但不推荐长期使用(依赖内部实现,版本更新可能失效):

var previousPageProp = this.GetType().GetProperty(
    "PreviousPage", 
    System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

if (previousPageProp != null)
{
    var previousPage = previousPageProp.GetValue(this) as Page;
    if (previousPage != null)
    {
        // 用上一页对象处理逻辑
    }
}

内容的提问来源于stack exchange,提问作者Vaibhav J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:05:24