我使用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)
    {
    }
}

我的Forms项目中的代码: MainView.xaml

<views:MvxContentPage x:TypeArguments="viewModels:MainViewModel"
xmlns="http://xamarin.com/schemas/2014/forms" 
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
xmlns:views="clr-namespace:MvvmCross.Forms.Views;assembly=MvvmCross.Forms"
xmlns:mvx="clr-namespace:MvvmCross.Forms.Bindings;assembly=MvvmCross.Forms"
xmlns:viewModels="clr-namespace:MyApp.Core.ViewModels;assembly=MyApp.Core"
x:Class="MyApp.Forms.Views.MainView">

    <ContentPage.Content>
        <StackLayout Margin="10">
            <Label Text="Subtotal" />
        </StackLayout>
    </ContentPage.Content>

</views:MvxContentPage>

MainView.xaml.cs

public partial class MainView : MvxContentPage<MainViewModel>
{
    public MainView()
    {
        InitializeComponent();
    }
}

在我的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);
    }
}

它可以编译,但是当我启动应用程序时出现异常:

MvvmCross.Exceptions.MvxException:创建View-ViewModel查找表时出现问题-您为ViewModels注册了多个视图:2 * MainViewModel(MainActivity,MainView)

#1楼 票数:4 已采纳

如果您的ViewModel称为MainViewModel,而Forms页面也是如此,则可能会发生名称冲突,因为MvvmCross将具有2个视图来进行ViewModel查找。 您可以通过将您的活动命名为“ FormsActivity.cs”来避免这种情况。

您也可以将MainViewModel重命名为MvxMainViewModel(无论您喜欢什么),然后该异常将消失。

  ask by Darius translate from so

未解决问题?本站智能推荐:

1回复

选项卡中的嵌套视图绑定到单独的ViewModel

有没有办法提供自己的viewmodel嵌套视图? 示例:TabbedView类型的主视图具有多个选项卡。 LoginPage和RegisterPage在单独的视图中。 但是所有绑定必须在MainViewModel中,并且我希望绑定分别在LoginViewModel和RegisterVi
2回复

嵌套ViewModel的嵌套视图

我正在寻找一个支持嵌套ViewModels和Views的解决方案/ mvvm框架。 我的意思是: 每个ViewModel都从BaseViewModel派生 ViewModel具有属于BaseViewModel类型的属性,这些属性属于SubViewModels(嵌套在父ViewMod
1回复

在单个ViewXamarin表单中加载多个ViewModel

我正在研究Xamarin Forms项目,在该项目中,我将一个屏幕分为两个部分,并在一个View中(例如DashBoardView.Xaml)。 一方面有一些菜单选项,另一方面我想在单击菜单选项时加载不同的视图。 动态视图具有注册的不同ViewModel(使用XLABS MVVM)ViewF
2回复

为同一个ViewModel绑定两个不同的视图

这看起来类似于MVVMCross - 将相同的 ViewModel 绑定到 2 个不同的视图但是在那里之后我没有得到答案如何为 ViewModel 选择一个视图,而在另一时间为同一个 ViewModel 选择第二个视图。 例如,我想要一个 ViewModel - LoginViewModel和两个视
1回复

MvvmCross和XamarinForms,获取重音色时,Android应用程序崩溃,出现空引用错误

我使用MvvmCross创建了一个简单的Xamarin Forms应用程序,以尝试找出我在另一个项目中遇到的错误。 这个简单的应用程序可以在这里找到: https : //github.com/selaromdotnet/XamFormsAppTest 它只有一个页面,上面带有工具栏项目,
1回复

MVVMCross:无法关闭视图

大家好,我现在在 MVVMCross 中有一个非常奇怪的问题。 我正在尝试使用navigationService.Close(this)关闭页面,但它没有关闭。 在日志记录中,我看到以下消息:忽略 ViewModel 的关闭 - ViewModel 实例的匹配视图失败。 我在 Github 上检查了
1回复

MVVMCross如何在后面的视图代码中获取ViewModel实例

我正在使用 MVVMCross 7.1.2 并且遇到我的几个页面无法继承MvxContentPage类的情况。 可以理解,这破坏了 MVVMCross 实现的一些东西。 我注意到的一件事是页面的BindingContext没有设置,因此我们得到了一个难以调试的 NullReference 异常。 从
1回复

如何为所有视图设置BarBackgroundColor?

我有一个针对iOS和Android开发的MvvmCross Xamarin Forms应用程序。 我正在尝试设置 所有视图(使用NavigationPage)都放在一个公共位置。 如果我使用的是Xamarin直接表单,则可能会有一个继承自NavigationPage的基类,然后在基类构