【问题标题】:Using Xamarin.Forms with Native pages (Xamarin.iOS, UWP)将 Xamarin.Forms 与本机页面(Xamarin.iOS、UWP)一起使用
【发布时间】:2018-05-22 10:13:46
【问题描述】:

我已经有了一个由Xamarin.iOSUWP 组成的解决方案。我们在两个平台上都有多个视图 (Pages)。我们使用的是MvvmCross,所以我们有一个公共代码(PCL),它由Viewmodels、业务逻辑等组成。此外,Xamarin.iOSUWP 都有单独的视图(Pages)。

现在我想为两个项目的本机页面添加Xamarin.Forms 支持,以便我们对Xamarin.iOSUWP 拥有相同的视图。我们需要导航的支持(从NativeXamarin.Forms 反之亦然)。我正在通过 MvvmCross 导航服务导航。

例如, 我在Xamarin.Forms 项目中有FirstFormView。 我在 Native 项目中有 SecondFormView(可以是 Xamarin.iOSUWP)。 我在Xamarin.Froms 项目中有ThirdFormView

我已经导航到FirstFormView(这是我的应用程序的起始页面) 现在我想去SecondFormView(在本机项目中)。 我需要从 SecondFormView 转到ThirdFormView,它又在Xamarin.Forms

MvvmCross可以做到吗?如果是,那么我们应该遵循哪些步骤来实现我们想要的目标。

提前致谢。

问候,

【问题讨论】:

    标签: xamarin xamarin.ios xamarin.forms uwp mvvmcross


    【解决方案1】:

    这可以通过表单演示者来实现。看看操场:https://github.com/MvvmCross/MvvmCross/tree/develop/TestProjects/Playground/Playground.Forms.Droid

    这里的视图都是Forms,但是1或2是Native的。通过使用相同的解决方案,您应该能够做到这一点。

    【讨论】:

    【解决方案2】:

    您的 PCL 项目中已经有 MvvmCross,只需为特定平台项目(iOS、UWP)中的每个页面添加 Xamarin 表单页面 (XAML)。以及适用于每个平台的自定义渲染器。

    例如:

    //in xamarin forms pcl project
    namespace XFormProject
    {
        public class MyXFormPage : ContentPage project
        {
    
        }
    }
    
    // in ios project
    namespace XFormProjecy.iOS
    {
    
        [assembly:ExportRenderer(typeof(XFormProject.MyXFormPage), typeof(XFormProject.iOS.MyXFormPageIOS))]
        public class MyXFormPageIOS : PageRenderer // in iOS
        {
            // your ios native page code goes here.
        }
    }
    

    阅读更多关于Custom Rederers

    希望这会有所帮助:)

    【讨论】:

    • 如何从本机页面导航到 Xamarin.Form 页面,反之亦然?
    • 表单页面应该代表您的本机页面,如上例所示。然后您可以在表单项目中导航,就像从一个表单页面到另一个页面一样
    • 我正在浏览MvvmCross's NavigationService。
    • 例如,我在Xamarin.Forms 项目中有FirstFormView。我在 Native 项目中有 SecondFormView(可以是 Xamarin.iOSUWP)。我在Xamarin.Froms 项目中有ThirdFormView。我已经导航到FirstFormView(这是我的应用程序的起始页面)现在我想转到SecondFormView(在本机项目中)。从 SecondFormView 我需要转到ThirdFormView,它又在Xamarin.Forms
    • 为 SecondView 创建 XamarinForm 页面,并将其与 ios 和 uwp 中的自定义本机视图绑定。那么您可以在表单项目中进行导航,而无需与本机项目通信。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多