视图未在 MVVMCross 中找到具有默认 VML 的视图模型
本文关键字:视图 默认 VML 模型 MVVMCross | 更新日期: 2023-09-27 18:30:40
我正在尝试创建一个可移植类,以便我可以跨平台使用它。它在Windows Phone 8.1应用程序中工作正常。但是当涉及到Android时,它在调试器中将Viewmodel显示为null,DataContext显示为Null,这会破坏应用程序调试器。当我创建另一个视图模型和视图来测试应用程序时,它在 android 上也能正常工作。可能的原因是什么。
编辑:由于构造函数,它崩溃了,我在其中传递了业务逻辑实例。所以,我认为构造函数是必要的,但在这种情况下它会崩溃。我不是在尝试解析 ViewModel,而是在尝试解析 ViewModel 中的服务实例,并且出于 MVVM 的目的,我将服务从 Droid 项目中排除在外。OnCreate(捆绑包)无论如何都不会进入场景。
公共图书视图模型(ILogic _logic) {
logic = _logic;
//var ss= Mvx.Resolve<ILogic>();
//var x = Mvx.CanResolve<ILogic>();
_details = logic.Read();
}
以下是逻辑代码:
public class Logic : ILogic
{
#region Attributes
List<Detail.Detail> _details = new List<Detail.Detail>();
DataLayer.DataLayer dl = new DataLayer.DataLayer();
#endregion
#region .ctor
public Logic()
{
populateList();
}
#endregion
#region Methods
private void populateList()
{
_details = dl.Access();
}
下面是ViewModel中的应用程序.cs其中CanResolve给出了False
公共类应用程序:Cirrious.MvvmCross.ViewModels.MvxApplication {
#region Methods
public override void Initialize()
{
Mvx.RegisterType<ILogic, Logic>();
var ss = Mvx.CanResolve<ILogic>();
RegisterAppStart<ViewModels.BookViewModel>();
}
#endregion
}
有一些与此类似的问题和答案 - 例如类似于 MVVMCross ViewModel 构建失败通知
基本答案是 MvvmCross 无法在构造函数期间解析 ViewModel - 您必须等到base.OnCreate(bundle)
调用之后 - 此时 ViewModel 将被解析。
更多关于ViewModel何时位于谁应该在MvvmCross和CoreDispatcher中创建视图模型实例.HasThreadAccess"重大更改"(可能还有其他一些地方)