在 Xamarin Forms 应用程序中获取当前页面名称

Posted

技术标签:

【中文标题】在 Xamarin Forms 应用程序中获取当前页面名称【英文标题】:Obtain current page name in Xamarin Forms app 【发布时间】:2015-02-02 23:50:15 【问题描述】:

我目前正在尝试了解如何使用我的 Xamarin Form 应用程序获取我当前进入的 (xaml) 页面的名称。

我该怎么做?我尝试了各种案例,甚至在互联网上四处寻找,但到目前为止没有什么对我有用:/

【问题讨论】:

你说的“名字”是什么意思?页面类的名称? XAML 中分配的名称?还是 Title 属性? XAML 中分配的名称,例如 MainPage.xaml,我想在输出“MainPage”中获取 【参考方案1】:

这只是 C# 反射 - XAML 页面的名称应该与其类的名称匹配

var name = this.GetType ().Name;

【讨论】:

非常漂亮,感谢您的帮助,这是我什至没有想过尝试的少数代码之一。谢谢!【参考方案2】:

您将(通常)使用由 NavigationPage 管理的单页应用程序(主/详细信息、标签页)或一组可导航页面。 App.Current.MainPage 将(通常)包含显示的第一页,如果它有 .Navigation,那将是可以为您提供最近显示的页面的 NavigationPage - 堆栈中的最后一个。如果不是,您可以假设您的应用是单页应用。

以上所有内容都是“常见的”,不一定在所有情况下都正确,但为您提供了一个起点来查找当前页面。

var actionPage = App.Current.MainPage;
if (actionPage.Navigation != null)
    actionPage = actionPage.Navigation.NavigationStack.Last();
actionPage.DisplayActionSheet(...)

【讨论】:

虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性 cmets 挤满你的代码,因为这会降低代码和解释的可读性! @FrankerZ 加了一点说明 这有助于我确定是否应该运行 SizeChanged 事件,因为它应该只在首页时运行。查看this 时,总是那个类,因为它是有事件的类,所以只有当你不知道运行你的方法的类时,Jason 的答案才有效。当它是一个事件时,它可能总是与方法所在的类相同。【参考方案3】:

我知道这已经解决了,而且场景有些不同,但在我的具体情况下,我需要从特定于平台的代码中识别导航堆栈中的当前页面,以防万一它可能对其他人有所帮助,这就是代码我用过:

我使用了页面构造函数中设置的title属性。

public static string GetCurrentPage()
        
            var page = App.Navigation.NavigationStack.Last();
            return page.Title;
        

【讨论】:

【参考方案4】:

您可以获得当前打开的页面。

1) 如果是 MainPage。 -> var MainPage = App.Current.MainPage as PageName;

2) 如果是导航页面

您可以获得计数页数。

App.Current.MainPage.Navigation.ModalStack.Count

var page= App.Current.MainPage.Navigation.ModalStack.LastOrDefault() as 

PageName;

App.Current.MainPage.Navigation.NavigationStack.Count

var page1=App.Current.MainPage.Navigation.NavigationStack.LastOrDefault() as 
PageName; 

【讨论】:

以上是关于在 Xamarin Forms 应用程序中获取当前页面名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xamarin.Forms.Map 中获取当前位置或移动到当前位置

如何在 Xamarin.Forms 中获取/检测屏幕大小?

如何在 xamarin.forms 中获取状态栏高度?

无法反序列化当前 JSON 对象,xamarin.forms 中的错误

无法反序列化当前 JSON 对象 xamarin.forms

Xamarin.Forms:Map.IsShowingUser没有显示当前位置?