微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法导航页面,同时使选项卡栏保持在Xamarin表单中可访问

如何解决无法导航页面,同时使选项卡栏保持在Xamarin表单中可访问

所以我有一个标签栏和一些附加的页面,我想做的是通过单击其中一个标签栏中的按钮导航到另一个页面(不是标签页面)。页面,这样做是为了替换页面标签栏,如何在标签栏本身中导航,我检查了几个线程,执行PushAsync应该可以解决问题,但不能正常工作

这是我的NavigateAsync方法代码

  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 举报,一经查实,本站将立刻删除。