使用 MvvmCross 6.0 在本机 Xamarin 应用程序中嵌入 Xamarin 表单

Dom*_*ski 6 xamarin.android mvvmcross xamarin xamarin.forms

我正在尝试使用 MvvmCross 6.0 将 Forms XAML 视图嵌入到 Xamarin Native 应用程序中。

我试图重现此解决方案的效果,但我在注册IMvxFormsViewPresenter. 我也跟着这个教程

我有一个简单的MainContainerActivitywith MainFragmentMainViewModel在 Core 中对应),其中包含一个指向 Forms SettingsActivity/的按钮SettingsViewModel

可以在测试存储库中找到完整的源代码。

目前,我在base.OnCreate(bundle);导航到SettingsViewModel以下位置时遇到了异常:

已抛出 MvvmCross.Exceptions.MvxIoCResolveException

无法解析类型 MvvmCross.Forms.Presenters.IMvxFormsViewPresenter

我找不到注册此 Forms Presenter 的方法。我试图做到这一点,Setup但没有成功。

我也尝试解决MvxFormsAndroidViewPresenterSplashActivity但结果为Mvx.Resolve<IMvxViewPresenter>() as MvxFormsAndroidViewPresenter;空。

你知道我应该怎么做才能将 Forms 视图合并到 MvvmCross 6.0 本机应用程序中吗?

namespace MvvmCrossFormsEmbedding.Droid.Views
{
    [Activity(Theme = "@style/AppTheme",
              Label = "SettingsActivity")]
    public class SettingsActivity : MvxFormsAppCompatActivity<SettingsViewModel>
    {
        public static SettingsActivity Instance { get; private set; }

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            // #1 Initialize
            Forms.Init(this, null);

            SetContentView(Resource.Layout.activity_settings);
            var toolbar = FindViewById<Toolbar>(Resource.Id.layout_toolbar);
            SupportActionBar.Title = "Settings";
            Instance = this;

            // #2 Use it
            var frag = new SettingsView().CreateFragment(this);

            var ft = FragmentManager.BeginTransaction();
            ft.Replace(Resource.Id.fragment_frame_layout, frag, "main");
            ft.Commit();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)