【问题标题】:Xamarin Forms Navigation inside FrameXamarin 在框架内形成导航
【发布时间】:2020-08-07 07:03:07
【问题描述】:

来自 UWP 的开发,我想知道是否可以在 Xamarin Forms 的框架内进行导航。我在文档上看到 Frame 元素有 INavigation 属性,所以我尝试了这段代码:

MyFrame.Navigation.PushAsync(new Page1());

但是当我尝试在 Android 上执行此代码时,我收到以下错误:

System.InvalidOperationException: 'PushAsync 不受全局支持 在 Android 上,请使用 NavigationPage。'

但是当我这样做时:

public App()
{
    InitializeComponent();
    MainPage = new NavigationPage(new MainPage());
}

导航无法按预期工作,因为它是全局的并且不在框架内。我们必须有一个全局导航还是不可能有一个特定的导航?目标是在应用中有一个静态部分和一个进行导航的部分。

例如,借助 Uno Platform,我们可以使用 UWP Frame 并在其中执行导航,所以我想知道为什么在 Xamarin Forms 中无法实现。

【问题讨论】:

    标签: xamarin.forms


    【解决方案1】:

    我们可以在自定义框架中定义一个 INavigation 类型的属性

    public class MyFrame:Frame
    {
        public INavigation CurrentNavigation { get; private set; }
    
        public MyFrame (INavigation navigation)
        {
            CurrentNavigation = navigation;
        }
    
    }
    

    在主页中

    public MainPage()
        {
            InitializeComponent();
            MyFrame myFrame = new MyFrame(this.Navigation);
            myFrame.CurrentNavigation.PushAsync(new Page1());
    
        }
    

    【讨论】:

    • 好的,感谢您的快速回答。但是,我在哪里声明我的导航页面,以便导航可以在框架内而不是全局执行?
    • 需要将 MainPage 设置为 NavigationPage 。
    • 好的,所以无法在 Xamarin Forms 中完成我想要的:/ 我会将您的回复标记为答案,这让我意识到我的请求无法实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多