Xamarin.forms 创建视图模型查找表时出现问题-您为视图模型注册了多个视图

Xamarin.forms 创建视图模型查找表时出现问题-您为视图模型注册了多个视图,xamarin.forms,mvvmcross,Xamarin.forms,Mvvmcross,我用MvvmCross启动了一个Xamarin.Froms项目。我按照官方MvvmCross网站上的文档使用Xamarin.Forms启动Android项目。以下是我的Core项目中的代码: public class App : MvxApplication { public App() { } public override void Initialize() { base.Initialize(); Mvx.IoC

我用MvvmCross启动了一个Xamarin.Froms项目。我按照官方MvvmCross网站上的文档使用Xamarin.Forms启动Android项目。以下是我的
Core
项目中的代码:

public class App : MvxApplication
{
    public App()
    {

    }

    public override void Initialize()
    {
        base.Initialize();

        Mvx.IoCProvider.RegisterSingleton(new NavigationStack());
        Mvx.IoCProvider.RegisterSingleton<IMvxAppStart>(new MvxAppStart<MainViewModel>(this, Mvx.IoCProvider.Resolve<IMvxNavigationService>()));
    }
}

public class MainViewModel : BaseViewModel
{
    public MainViewModel(NavigationStack navigationStack) : base(navigationStack)
    {
    }
}
MainView.xaml.cs

public partial class MainView : MvxContentPage<MainViewModel>
{
    public MainView()
    {
        InitializeComponent();
    }
}
public分部类主视图:MvxContentPage
{
公共主视图()
{
初始化组件();
}
}
在我的Android项目中:

[Activity(
    Label = "MyApp.Droid",
    Theme = "@style/MyTheme",
    MainLauncher = true,
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
    LaunchMode = LaunchMode.SingleTask)]
public class MainActivity : MvxFormsAppCompatActivity<MvxFormsAndroidSetup<Core.App, Forms.App>, Core.App, Forms.App>
{
    protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;
        base.OnCreate(bundle);
    }
}
[活动](
Label=“MyApp.Droid”,
Theme=“@style/MyTheme”,
MainLauncher=true,
ConfigurationChanges=ConfigChanges.ScreenSize | ConfigChanges.Orientation,
LaunchMode=LaunchMode.SingleTask)]
公共类main活动:MvxFormsAppCompatActivity
{
创建时受保护的覆盖无效(捆绑包)
{
TabLayoutResource=Resource.Layout.Tabbar;
ToolbarResource=Resource.Layout.Toolbar;
base.OnCreate(bundle);
}
}
它可以编译,但当我启动应用程序时,会出现异常:

MvvmCross.Exceptions.MvxException:创建时出现问题 视图模型查找表-已注册多个视图 对于ViewModels:2*MainViewModel(MainActivity,MainView)


如果您的ViewModel名为MainViewModel,而表单页面名为MainViewModel,则可能会出现名称冲突,因为MvvmCross将有两个视图到ViewModel的查找。您可以通过将您的活动命名为“FormsActivity.cs”等不同的名称来防止这种情况

您还可以将MainViewModel重命名为MvxMainViewModel(任意),然后此异常将消失

[Activity(
    Label = "MyApp.Droid",
    Theme = "@style/MyTheme",
    MainLauncher = true,
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
    LaunchMode = LaunchMode.SingleTask)]
public class MainActivity : MvxFormsAppCompatActivity<MvxFormsAndroidSetup<Core.App, Forms.App>, Core.App, Forms.App>
{
    protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;
        base.OnCreate(bundle);
    }
}