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

vc6uscn9  于 2022-12-07  发布在  其他
关注(0)|答案(5)|浏览(220)

我目前正在尝试了解如何使用Xamarin Form应用程序获得我当前进入的(xaml)页面的名称。
我应该怎么做呢?我试过各种各样的案例,甚至在网上四处寻找,但到目前为止没有一个真正对我有效:/

mzaanser

mzaanser1#

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

var name = this.GetType ().Name;
pinkon5k

pinkon5k2#

你会(通常)使用单页应用程序(主/细节,标签页)或一组可导航页面,由NavigationPage管理。App.Current.MainPage(通常)会包含显示的第一个页面,如果它有.Navigation,那将是NavigationPage,它可以给予你最近显示的页面-堆栈中的最后一个。如果它没有,你可以假设你的应用程序是单页应用程序。
以上所述只是“常见的”,并不一定在所有情况下都是正确的,但它给了你一个寻找当前页面的起点。

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

wxclj1h53#

我知道这个问题已经解决了,场景也有些不同,但在我的具体情况下,我需要从平台特定的代码中识别导航堆栈中的当前页面,所以以防万一它可能会帮助其他人,这是我使用的代码:
我使用了在页面的构造函数中设置的title属性。

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

mbjcgjjk4#

您可以获取当前打开页面
1)* * 如果是MainPage.-〉var MainPage =应用程序.当前. MainPage作为页面名称;
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;
4xy9mtcn

4xy9mtcn5#

以下是如何从应用程序中的任意位置获取当前页面类型(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();

希望能有所帮助。

相关问题