在MvvmCross中是否可以将视图模型注入到视图的构造函数中?
我的视图的构造函数如下所示:
public HomeView(IHomeViewModel viewModel)
{
...
}
在Setup.cs类中,我使用以下方法手动将视图模型映射到视图:
protected override void InitializeViewLookup()
{
IDictionary<Type, Type> lookups = new Dictionary<Type, Type>
{
{typeof(HomeViewModel), typeof(HomeView)}
};
IMvxViewsContainer container = Mvx.Resolve<IMvxViewsContainer>();
container.AddAll(lookups);
}
在Setup.Initialize
方法中,我向IoC容器注册IHomeViewModel
:
Mvx.RegisterType<IHomeViewModel, HomeViewModel>();
当我运行应用程序时,视图似乎呈现,但没有任何控件可见。另外,如果我在构造函数中放置一个断点,它就不会被击中。
所以我想知道这是否可行,还是我需要在视图中手动创建视图模型?
P.S。我正在创建一个Windows Phone Universal应用程序。
答案 0 :(得分:0)
在MvvmCross中是否可以将视图模型注入到视图的构造函数中?
在Windows的情况下,它可能是 - 如果你可以找出谁构造视图(它将在框架中某处?),然后你可以覆盖它以便使用IoC容器。 / p>
然而,从实际的角度来看,它可能比它的价值更大。
相反:
OnNavigatedTo
期间提供ViewModel(然后还允许使用导航参数)Mvx.Resolve<T>
所以我想知道这是否可行,还是我需要在视图中手动创建视图模型?
从问题的这一部分来看,我猜测某些事情只是“出错了”#34; - 但很难从这个问题中知道什么。要尝试调试它,您可以检查调试跟踪,您可以与工作示例应用程序进行比较,您可以单步执行代码等。如果所有其他方法都失败了,请下载到一个非常简单的入门应用程序并尝试调试... < / p>