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

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

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

【问题讨论】:

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

标签: c# xaml mono xamarin xamarin.forms


【解决方案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; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 2010-11-24
      • 2023-03-25
      • 2012-01-06
      • 2013-06-25
      • 2016-12-18
      相关资源
      最近更新 更多