【发布时间】:2014-11-17 11:29:13
【问题描述】:
我正在尝试创建一个可移植类,以便我可以跨平台使用它。它在 Windows Phone 8.1 应用程序中运行良好。但是当涉及到 Android 时,它会在调试器中将 Viewmodel 显示为 null 并将 DataContext 显示为 Null,这会破坏应用程序调试器。当我创建另一个视图模型和视图来测试应用程序时,它在 android 上也可以正常工作。可能的原因是什么。
EDIT :由于构造函数而崩溃,我在其中传递了业务逻辑实例。因此,我认为构造函数是必要的,但在这种情况下它会崩溃。我不是在尝试解析 ViewModel,而是在尝试解析 ViewModel 中的服务实例,并且为了 MVVM 的目的,我将服务排除在 Droid 项目之外所以 base.OnCreate(bundle) 无论如何都不会出现在场景中。
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
公共类 App : Cirrious.MvvmCross.ViewModels.MvxApplication {
#region Methods
public override void Initialize()
{
Mvx.RegisterType<ILogic, Logic>();
var ss = Mvx.CanResolve<ILogic>();
RegisterAppStart<ViewModels.BookViewModel>();
}
#endregion
}
【问题讨论】: