shell内的Xamarin表单导航页面

问题描述 投票:0回答:1

我有问题。我创建了一个包含内容的shellpage。现在,我想在shell中设置名为TransitionNavigationPage的页面的自定义类型。如果我在没有外壳的情况下设置了代码,请执行以下操作:

App.Current.MainPage = new Controls.TransitionNavigationPage(new HomePage());

但是现在它在Shell中,所以我尝试了这个:

var transitionNavigationPage = new PageTransitionControls.TransitionNavigationPage(new HomePage());
MainShell.Items[0].Items[0].Items[0].ContentTemplate = new DataTemplate(typeof(transitionNavigationPage));

但是那给了我错误:

transitionNavigationPage是一个变量,但是像类型一样使用

这是TransitionNavigationPage类的代码:

public class TransitionNavigationPage : NavigationPage
{
    public static readonly BindableProperty TransitionTypeProperty =
            BindableProperty.Create("TransitionType", typeof(TransitionType), typeof(TransitionNavigationPage), TransitionType.SlideFromLeft);

    public TransitionType TransitionType
    {
        get { return (TransitionType)GetValue(TransitionTypeProperty); }
        set { SetValue(TransitionTypeProperty, value); }
    }

    public TransitionNavigationPage() : base()
    {
    }

    public TransitionNavigationPage(Page root) : base(root)
    {
    }
}

那么如何在外壳内容中设置自定义NavigationPage?

c# xamarin xamarin.forms xamarin.android xamarin.ios
1个回答
0
投票

基本上,您的问题是概念之一,正如我所看到的。您正在尝试结合两种不同的Navigation范例! Shell的整个想法是提供与NavigationPage可用的不同的Navigation范例,因此我的建议是:重新考虑您的方法。

可能的替代方法:

由于我所见,使用自定义NavigationPage的唯一目的是定义BindableProperty TransitionType,我建议您以类似的方式创建自定义Shell,如下所示:

public class TransitionShellPage : Shell
{
    public static readonly BindableProperty TransitionTypeProperty =
                BindableProperty.Create("TransitionType", typeof(TransitionType), typeof(TransitionNavigationPage), TransitionType.SlideFromLeft);

    public TransitionType TransitionType
    {
        get { return (TransitionType)GetValue(TransitionTypeProperty); }
        set { SetValue(TransitionTypeProperty, value); }
    }
}

然后,在AppShell中而不是从Shell继承,而是从TransitionShellPage继承。

有关Shell的更多信息,请查看MSDN docu,或来自Eduardo Rosas的与此主题相关的其他文章。

© www.soinside.com 2019 - 2024. All rights reserved.