【问题标题】:How to set the CurrentPage property of a TabbedPage in the OnCurrentPageChanged method?如何在 OnCurrentPageChanged 方法中设置 TabbedPage 的 CurrentPage 属性?
【发布时间】:2019-02-13 05:47:19
【问题描述】:
protected override void OnCurrentPageChanged()
    {
        base.OnCurrentPageChanged();

            if (CurrentPage == firstPage)
            {
                CurrentPage = secondPage;
            }
        }
    }

当我在 OnCurrentPageChanged() 方法中设置 TabbedPage 的 CurrentPage 属性时,出现了问题:

  1. 如果我使用滑动切换到匹配条件的页面,应用程序会挂起。

  2. 如果我点击标签栏中的一个页面,该页面不会更改为所需的页面(据我了解,在这种情况下,分配是在重新分配页面之前执行的)。

【问题讨论】:

  • 您为什么要这样做?更改基本导航行为可能会给用户带来非常糟糕的体验。
  • @Jason 该页面显示日程安排。标签是星期一、星期三、星期四、星期五、星期六、星期日。我想在星期一的左边做一个后退按钮,同样在周末。这将允许在几周之间导航。
  • @Jason 或者有没有办法以某种方式自定义 Tabbar 以在其上放置按钮?
  • 好的,这很有趣。但是每个页面不是都一样,只是驱动它的日期不同吗?所以你真的只需要告诉页面改变他们的数据吗?
  • @Jason 是的,我需要更改页面上的数据

标签: c# xamarin xamarin.forms


【解决方案1】:

这应该可以工作

    myTabs.CurrentPageChanged += Handle_CurrentPageChanged;

    void Handle_CurrentPageChanged(object sender, System.EventArgs e)
    {
        // you will either want to add a try/catch here, or test that 
        // Children.Count > 1 (or whatever your number of pages is) to
        // prevent this from blowing up as the tabs are initializing
            if (CurrentPage == Children[0])
            {
                CurrentPage = Children[1];
            }
    }

【讨论】:

  • 我在一个示例应用程序中对其进行了测试,它运行良好。具体是什么不起作用?事件是否触发?是否有错误或异常?
  • 第一次尝试根本行不通,第二次则毫无例外地进入永无止境的循环
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 2013-10-30
  • 2011-09-18
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
相关资源
最近更新 更多