MvvmCross并将视图模型注入视图构造函数
本文关键字:视图 注入 构造函数 模型 MvvmCross | 更新日期: 2023-09-27 18:32:38
是否可以
在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>();
当我运行应用程序时,视图似乎呈现,但没有一个控件可见。另外,如果我在构造函数中放置一个断点,它不会被命中。
所以我想知道这是否可能,还是我需要在视图中手动创建视图模型?
附言我正在创建一个Windows Phone Universal应用程序。
是否可以在 MvvmCross 中将视图模型注入到视图的构造函数中?
在Windows的情况下,它可能是 - 如果你能弄清楚谁构造了视图(它会在框架的某个地方?(,如果你可以覆盖它以使用IoC容器。
但是,从实际的角度来看,这可能比它的价值付出更多的努力。
相反:
- 你可以只使用默认的 MvvmCross ViewModel 构造/查找机制 - 它在
OnNavigatedTo
期间提供 ViewModel(然后还允许使用导航参数( - 您可以发明自己的服务提供商查找 - 例如,在视图构造函数(或其他地方(使用
Mvx.Resolve<T>
从所以我想知道这是否可能,还是我需要在视图中手动创建视图模型?
问题的这一部分,我猜测有些事情只是"出错"——但很难从问题中知道什么。若要尝试调试它,可以检查调试跟踪,可以与工作示例应用程序进行比较,可以单步执行代码等。如果所有其他方法都失败了,请下拉到一个非常简单的入门应用程序并尝试调试它......