在TabbedPage中,如何在当前子页面上推送另一个页面?

时间:2015-01-23 16:26:27

标签: xamarin xamarin.forms

(此处提供完整的代码示例: https://github.com/csvan/TabbedPageModalDemo

我的Xamarin.Forms应用程序中有以下页面结构:

namespace TabbedPageModalDemo
{
    public class MyTabbedPage : TabbedPage
    {
        public MyTabbedPage ()
        {
            Title = "Tabbed Page";

            Children.Add (new MyTabPage ());
        }
    }
}

namespace TabbedPageModalDemo
{
    public class MyTabPage : ContentPage
    {
        public MyTabPage ()
        {
            Title = "Tab Page";

            var button = new Button {
                Text = "Open Modal"
            };

            // Using PushModal as an example - PushAsync also fills the whole screen.
            button.Clicked += (sender, e) => Navigation.PushModalAsync (new MyModalPage ());

            var stack = new StackLayout ();
            stack.Children.Add (button);

            Content = stack;
        }
    }
}

namespace TabbedPageModalDemo
{
    public class MyModalPage : ContentPage
    {
        public MyModalPage ()
        {
            Title = "Modal Page";

            var label = new Label {
                Text = "I am a modal page!"
            };

            var stack = new StackLayout ();
            stack.Children.Add (label);

            Content = stack;
        }
    }
}

我想要的是以下内容:当我按下按钮时,我希望MyModalPage 仅占用MyTabPage占用的相同空间。目前,它填满整个屏幕,也包括MyTabbedPage。 请注意,如果我使用PushAsync ,也会发生相同的情况。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您是否尝试在当前模态页面中使用填充?

Padding = new Thickness(0,30,0,0);

答案 1 :(得分:0)

我认为更好的方法是使用NavigationPages而不是ContentPage作为Child-Elements。可以看到一个很好的例子here