Xamarin.forms 创建视图模型查找表时出现问题-您为视图模型注册了多个视图
我用MvvmCross启动了一个Xamarin.Froms项目。我按照官方MvvmCross网站上的文档使用Xamarin.Forms启动Android项目。以下是我的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
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);
}
}