在 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 中获取当前位置或移动到当前位置
无法反序列化当前 JSON 对象,xamarin.forms 中的错误