Gui*_*rin 2 c# mono xaml xamarin xamarin.forms
我目前正在尝试通过我的Xamarin Form应用程序了解如何获取我目前所使用的(xaml)页面的名称.
我该怎么办呢?我试过各种各样的案例,甚至环顾互联网,但到目前为止我没有任何实际工作:
Jas*_*son 11
这只是C#反射 - XAML页面的名称应该与其类的名称相匹配
var name = this.GetType ().Name;
Run Code Online (Sandbox Code Playgroud)
您(通常)会使用由NavigationPage管理的单页应用程序(主/明细,标签页)或一组可导航页面.
App.Current.MainPage将(通常)包含显示的第一页,如果有.Navigation,那将是可以为您提供最近显示的页面的NavigationPage - 堆栈中的最后一页.如果不是,您可以假设您的应用是一个页面应用程序.
所有上述内容都只是"常见",并不一定适用于所有情况,但为您提供了查找当前页面的起点.
var actionPage = App.Current.MainPage;
if (actionPage.Navigation != null)
actionPage = actionPage.Navigation.NavigationStack.Last();
actionPage.DisplayActionSheet(...)
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以获得当前打开的页面。
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;
Run Code Online (Sandbox Code Playgroud)
App.Current.MainPage.Navigation.NavigationStack.Count
var page1=App.Current.MainPage.Navigation.NavigationStack.LastOrDefault() as
PageName;
Run Code Online (Sandbox Code Playgroud)
我知道这已经解决了,并且场景有些不同但在我的具体情况下我需要从平台特定代码中识别导航堆栈中的当前页面,以防万一它可以帮助其他人,这是我使用的代码:
我使用了在页面构造函数中设置的title属性.
public static string GetCurrentPage()
{
var page = App.Navigation.NavigationStack.Last();
return page.Title;
}
Run Code Online (Sandbox Code Playgroud)