是否可以在Xamarin表单的选项卡式页面中使用模式页面?

是否可以在Xamarin表单的选项卡式页面中使用模式页面?,xamarin,xamarin.forms,Xamarin,Xamarin.forms,正如我的标题所说,在Xamarin表单中单击选项卡时是否可以使用模式页面 我想做什么当我点击我的5个标签之一,它会打开一个模式页面。如果可能的话,请有人给我举个例子,告诉我怎么做,或者告诉我正确的方法。当然,这是可能的,但有点棘手 创建一个空白页(例如FakePage)并将其添加到选项卡页。子项 在选项卡Page code behind overrideOnCurrentPageChanged中,检查是否选择了伪造页面,然后打开一个模式 打开模式时,告诉您的选项卡页面返回到上一个选项卡(因此当用

正如我的标题所说,在Xamarin表单中单击选项卡时是否可以使用模式页面


我想做什么当我点击我的5个标签之一,它会打开一个模式页面。如果可能的话,请有人给我举个例子,告诉我怎么做,或者告诉我正确的方法。

当然,这是可能的,但有点棘手

  • 创建一个空白页(例如FakePage)并将其添加到
    选项卡页。子项
  • 在选项卡Page code behind override
    OnCurrentPageChanged
    中,检查是否选择了伪造页面,然后打开一个模式
  • 打开模式时,告诉您的
    选项卡页面
    返回到上一个选项卡(因此当用户关闭模式时,不会看到空白页面)
  • 您的选项卡式页面儿童

    
    
    选项卡式页面代码隐藏

    private页面\u lastPage;
    受保护的重写异步void OnCurrentPageChanged()
    {
    如果(当前页面为伪造页面)
    {
    等待导航;
    //稍等模态打开,然后重新选择最后一个选项卡
    //这在用户关闭模式时非常有用:您不想显示空白页
    等待任务。延迟(150);
    CurrentPage=\u lastPage;
    } 
    其他的
    {
    _lastPage=当前页面;
    }
    base.OnCurrentPageChanged();
    }
    
    根据詹帕罗的说法,以下方法可能会更流畅一些:

    protected override async void OnCurrentPageChanged()
        {
            if (CurrentPage is FakePage)
            {
    
                CurrentPage = _lastPage;
                await Navigation.PushModalAsync(new YourModalPage());
    
            }
            else
            {
                _lastPage = CurrentPage;
            }
    
            base.OnCurrentPageChanged();
        }
    

    P>这样,在过渡期间,你永远看不到空白假页。

    我想你可以做这项工作,但听起来像是一个非常糟糕的UX。我真的会重新考虑任何需要这种行为的设计。