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

时间:2019-05-18 04:02:03

标签: xamarin xamarin.forms

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

当我单击5个选项卡之一时,我想执行的操作将打开“模态”页面。如果可以的话,请有人给我展示一些示例,或者指出正确的方法。

2 个答案:

答案 0 :(得分:0)

当然可以,但是有点棘手。

  1. 创建一个空白页(例如FakePage)并将其添加到TabbedPage.Children
  2. 在覆盖OnCurrentPageChanged后面的TabbedPage代码中,检查何时选择了伪造页面,然后打开一个模式。
  3. 打开模态后,告诉您的TabbedPage返回上一个标签(因此,当用户关闭模态时,不会看到空白页)

您的选项卡式页面儿童

<views:Page1 Title="First tab" />
<views:Page2 Title="Second Tab" />
<views:FakePage Title="Modal tab" />

在后面加上标签的页面代码

    private Page _lastPage;
    protected override async void OnCurrentPageChanged()
    {
        if (CurrentPage is FakePage)
        {
            await Navigation.PushModalAsync(new YourModalPage());

            //Wait a bit for the modal to open, then reselect the last tab
            //This is useful when a user close the modal: you dont want to show a blank page
            await Task.Delay(150);
            CurrentPage = _lastPage;
        } 
        else
        {
            _lastPage = CurrentPage;
        }

        base.OnCurrentPageChanged();
    }

答案 1 :(得分:0)

与Giampaolo所说的相反,以下方法可能会更平滑:

protected override async void OnCurrentPageChanged()
    {
        if (CurrentPage is FakePage)
        {

            CurrentPage = _lastPage;
            await Navigation.PushModalAsync(new YourModalPage());

        }
        else
        {
            _lastPage = CurrentPage;
        }

        base.OnCurrentPageChanged();
    }

那样,在过渡期间您将永远不会看到空白的伪造页面。