如何在.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.
相关产品推荐
相关产品推荐

