视图未在 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 中找到具有默认 VML 的视图模型

有一些与此类似的问题和答案 - 例如类似于 MVVMCross ViewModel 构建失败通知

基本答案是 MvvmCross 无法在构造函数期间解析 ViewModel - 您必须等到base.OnCreate(bundle)调用之后 - 此时 ViewModel 将被解析。

还有

更多关于ViewModel何时位于谁应该在MvvmCross和CoreDispatcher中创建视图模型实例.HasThreadAccess"重大更改"(可能还有其他一些地方)

相关文章: