Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.android MvvmCross-无法解析ViewModel的类型_Xamarin.android_Xamarin_Mvvmcross - Fatal编程技术网

Xamarin.android MvvmCross-无法解析ViewModel的类型

Xamarin.android MvvmCross-无法解析ViewModel的类型,xamarin.android,xamarin,mvvmcross,Xamarin.android,Xamarin,Mvvmcross,这是相关的,但可能保证自己的 我需要能够在ViewModel的相关Android视图中执行命令,特别是在单击操作栏菜单项时。因此,首先我需要访问ViewModel的实例 首先,我在视图的onCreateOptions菜单方法中尝试了以下代码行: …这没用 但是,将以下内容添加到Apps.cs中修复了错误,但导致了其他问题,因为它显然没有为我提供MvvmCross框架必须已在后台初始化的ViewModel实例: public override void Initialize() { Cre

这是相关的,但可能保证自己的

我需要能够在ViewModel的相关Android视图中执行命令,特别是在单击操作栏菜单项时。因此,首先我需要访问ViewModel的实例

首先,我在视图的onCreateOptions菜单方法中尝试了以下代码行:

…这没用

但是,将以下内容添加到Apps.cs中修复了错误,但导致了其他问题,因为它显然没有为我提供MvvmCross框架必须已在后台初始化的ViewModel实例:

public override void Initialize() {
    CreatableTypes()
        .EndingWith("NewJobViewModel")
        .AsTypes()
        .RegisterAsSingleton();
}

我显然误解了一些架构和背景中发生的事情,因此如果这是一个基本问题,我很抱歉,但有人能告诉我我做错了什么吗?

MvvmCross会自动为您连接视图和视图模型

这会在调用base.OnCreatebundle时自动发生

如果要在视图中访问ViewModel,可以使用ViewModel属性进行访问

但是,由于ViewModel属性是在共享基类中定义的,因此它属于IMvxViewModel类型

要获得类型化的ViewModel,您只需将其强制转换为您的特定类型-例如

 var myTypedView = (MyTypedViewModel)ViewModel;

您肯定不想创建Mvx.Resolve尝试创建的新viewmodel,相反,您只想访问当前viewmodel

MvvmCross会自动为您连接视图和ViewModel

这会在调用base.OnCreatebundle时自动发生

如果要在视图中访问ViewModel,可以使用ViewModel属性进行访问

但是,由于ViewModel属性是在共享基类中定义的,因此它属于IMvxViewModel类型

要获得类型化的ViewModel,您只需将其强制转换为您的特定类型-例如

 var myTypedView = (MyTypedViewModel)ViewModel;

您肯定不想创建Mvx.Resolve尝试创建的新viewmodel,相反,您只想访问当前viewmodel

感谢Stuart,它解决了我的问题,现在我已经成功地将操作栏的单击事件连接到ViewModel中的命令。附言:我发现你们的N+1系列视频是学习MvvmCross的绝佳方式。继续努力:-Graham。但是对于一些场景,比如选项卡视图,HomeViewModel有一些子视图模型,每个选项卡一个。是否新建每个子视图模型,并将所有依赖项传递给HomeViewModel?为什么不在HomeViewModel构造函数中使用Mvx.Resolve呢?感谢Stuart,它解决了我的问题,现在我已经成功地将操作栏的单击事件连接到ViewModel中的命令。附言:我发现你们的N+1系列视频是学习MvvmCross的绝佳方式。继续努力:-Graham。但是对于一些场景,比如选项卡视图,HomeViewModel有一些子视图模型,每个选项卡一个。是否新建每个子视图模型,并将所有依赖项传递给HomeViewModel?为什么不在HomeViewModel构造函数中使用Mvx.Resolve?
 var myTypedView = (MyTypedViewModel)ViewModel;