我正在尝试创建一个可移植类,以便我可以跨平台使用它。它在Windows Phone 8.1 App中运行良好。但是当涉及到Android时,它会在调试器中将Viewmodel显示为null并将DataContext显示为Null,这会破坏应用程序调试器。当我创建另一个viewmodel并查看测试应用程序时,它在android上工作正常。可能的原因是什么。
编辑:由于构造函数而崩溃,我在其中传递业务逻辑实例。所以,我认为构造函数是必要的,但在这种情况下它崩溃了。我没有尝试解析ViewModel,我正在尝试解决ViewModel中的Service实例,并且出于MVVM的目的,我将服务从Droid Project中保留下来所以base.OnCreate(捆绑)无论如何都不会进入场景。
public BookViewModel(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中的App.cs,CanResolve在其中提供 False
public class App:Cirrious.MvvmCross.ViewModels.MvxApplication {
#region Methods
public override void Initialize()
{
Mvx.RegisterType<ILogic, Logic>();
var ss = Mvx.CanResolve<ILogic>();
RegisterAppStart<ViewModels.BookViewModel>();
}
#endregion
}
答案 0 :(得分:0)
有几个与此类似的问题和答案 - 例如类似于MVVMCross ViewModel construction failure notifications
基本答案是MvvmCross在构造函数期间无法解析ViewModel - 您必须等到base.OnCreate(bundle)
调用之后 - 此时ViewModel将被解析。
还有一些关于ViewModel位于Who should create view model instances in MvvmCross和CoreDispatcher.HasThreadAccess "breaking change"(以及可能还有其他一些地方)的更多信息