我目前正在尝试了解如何使用我的 Xamarin Form 应用程序获取我当前进入的 (xaml) 页面的名称。
我该怎么做?我尝试了各种情况,甚至在互联网上查找,但到目前为止没有任何实际对我有用:/
这只是 C# 反射 - XAML 页面的名称应与其类的名称匹配
var name = this.GetType ().Name;
您(通常)会使用单页应用程序(主/详细信息、选项卡页)或一组由导航页面管理的可导航页面。
App.Current.MainPage
(通常)将包含显示的第一页,如果它有 .Navigation
,则这将是导航页面,可以为您提供最近显示的页面 - 堆栈中的最后一个页面。如果不是,您可以假设您的应用程序是一页应用程序。
以上所有内容只是“常见”,不一定在所有情况下都正确,但为您提供了查找当前页面的起点。
var actionPage = App.Current.MainPage;
if (actionPage.Navigation != null)
actionPage = actionPage.Navigation.NavigationStack.Last();
actionPage.DisplayActionSheet(...)
我知道这个问题已经解决,情况有些不同,但在我的具体情况下,我需要从平台特定的代码中识别导航堆栈中的当前页面,以防万一它可以帮助其他人,这是我使用的代码:
我使用了在页面构造函数中设置的标题属性。
public static string GetCurrentPage()
{
var page = App.Navigation.NavigationStack.Last();
return page.Title;
}
您可以获取当前打开的页面。
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;
以下是如何从应用程序中的任何位置获取当前页面类型的方法 (
Xamarin Forms
)。
这可能是对你的问题的更普遍的答案,但我认为值得发布。
如果您正在使用:
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()
正如其他人也提到的:
var mainPage = App.Current.MainPage;
var currentPage = mainPage.Navigation.NavigationStack.Last();
希望有帮助。
我有同样的要求,这里显示的解决方案都不适合我,我尝试了这个:
var mainpage = App.Current.MainPage as Shell;
var currentpage = mainpage.CurrentPage;
终于成功了!