如何解决无法导航页面,同时使选项卡栏保持在Xamarin表单中可访问
所以我有一个标签栏和一些附加的页面,我想做的是通过单击其中一个标签栏中的按钮导航到另一个页面(不是标签栏页面)。页面,这样做是为了替换页面标签栏,如何在标签栏本身中导航,我检查了几个线程,执行PushAsync应该可以解决问题,但不能正常工作
public async Task NavigateAsync(string pageKey,object[] parameter,bool animated = true)
{
var page = GetPage(pageKey,parameter);
await CurrentNavigationPage.Navigation.PushAsync(page,animated);
}
private readonly Stack<NavigationPage> _navigationPageStack = new Stack<NavigationPage>();
private NavigationPage CurrentNavigationPage => _navigationPageStack.Peek();
解决方法
我们在TabbedPage中有一个CurrentPage属性。您将需要此CurrentPage.Navigation对象将页面推入选项卡栏本身。
,事实证明,在我的导航服务中,我使用选项卡式页面作为导航页面导航到其他页面,但是如果您获得当前页面(在将它们作为子代添加到选项卡式页面时应封装在导航中) ,然后在浏览时使用它在当前页面内创建一个新页面,而不是整个选项卡页面
这是将currentPage存储为要导航的导航元素的语法
public Page SetRootPage(string rootPageKey = null,Page pageName = null)
{
NavigationPage tempPage = null;
if (rootPageKey != null)
{
var rootPage = GetPage(rootPageKey);
if (rootPage is TabbedPage tabbedRootPage)
{
tempPage = tabbedRootPage.CurrentPage as NavigationPage;
}
if (tempPage == null)
{
CurrentNavigationPage = rootPage is NavigationPage ? (NavigationPage)rootPage : new NavigationPage(rootPage);
}
else
{
CurrentNavigationPage = tempPage;
}
return CurrentNavigationPage;
// as NavigationPage;
//_navigationPageStack.Clear();
//var mainPage = new NavigationPage(rootPage);
// _navigationPageStack.Push(mainPage);
}
else
{
if (pageName is TabbedPage tabbedPage)
{
CurrentNavigationPage = tabbedPage.CurrentPage as NavigationPage;
}
else
{
CurrentNavigationPage = pageName as NavigationPage;
}
return CurrentNavigationPage;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。