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

问题描述 投票:0回答:6

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

我该怎么做?我尝试了各种情况,甚至在互联网上查找,但到目前为止没有任何实际对我有用:/

c# xaml mono xamarin xamarin.forms
6个回答
20
投票

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

var name = this.GetType ().Name;

15
投票

您(通常)会使用单页应用程序(主/详细信息、选项卡页)或一组由导航页面管理的可导航页面。

App.Current.MainPage
(通常)将包含显示的第一页,如果它有
.Navigation
,则这将是导航页面,可以为您提供最近显示的页面 - 堆栈中的最后一个页面。如果不是,您可以假设您的应用程序是一页应用程序。

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

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

12
投票

我知道这个问题已经解决,情况有些不同,但在我的具体情况下,我需要从平台特定的代码中识别导航堆栈中的当前页面,以防万一它可以帮助其他人,这是我使用的代码:

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

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

7
投票

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

1) 如果是主页。 -> 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; 

1
投票

以下是如何从应用程序中的任何位置获取当前页面类型的方法 (

Xamarin Forms
)。

这可能是对你的问题的更普遍的答案,但我认为值得发布。

如果您正在使用:

1.带有选项卡/一页的应用程序

var mainPage = App.Current.MainPage as Xamarin.Forms.Shell;
var currentPage = mainPage.CurrentPage;
var type = currentPage.GetType().Name;

另外,当前页面的 URL:

string location = mainPage.CurrentState.Location.ToString()

2.基于导航的应用程序

正如其他人也提到的:

var mainPage = App.Current.MainPage;
var currentPage = mainPage.Navigation.NavigationStack.Last();

希望有帮助。


0
投票

我有同样的要求,这里显示的解决方案都不适合我,我尝试了这个:

var mainpage = App.Current.MainPage as Shell;
var currentpage = mainpage.CurrentPage;

终于成功了!

© www.soinside.com 2019 - 2024. All rights reserved.