C# MvvmCross并将视图模型注入到视图构造函数中

C# MvvmCross并将视图模型注入到视图构造函数中,c#,windows-phone,windows-phone-8.1,mvvmcross,win-universal-app,C#,Windows Phone,Windows Phone 8.1,Mvvmcross,Win Universal App,在MvvmCross中是否可以将视图模型注入到视图的构造函数中 “我的视图”的构造函数如下所示: public HomeView(IHomeViewModel viewModel) { ... } 在Setup.cs class I中,使用以下命令手动将视图模型映射到视图: protected override void InitializeViewLookup() { IDictionary<Type, Type> lookups = new Dictionary<Ty

在MvvmCross中是否可以将视图模型注入到视图的构造函数中

“我的视图”的构造函数如下所示:

public HomeView(IHomeViewModel viewModel)
{
...
}
在Setup.cs class I中,使用以下命令手动将视图模型映射到视图:

protected override void InitializeViewLookup()
{
  IDictionary<Type, Type> lookups = new Dictionary<Type, Type>
  {
    {typeof(HomeViewModel), typeof(HomeView)}
  };

  IMvxViewsContainer container = Mvx.Resolve<IMvxViewsContainer>();
  container.AddAll(lookups);
}
当我运行应用程序时,视图显示为渲染,但没有任何控件可见。另外,如果我在构造函数中放置断点,它不会被命中

所以我想知道这是否可行,或者我是否需要在视图内部手动创建视图模型

另外,我正在创建一个Windows Phone通用应用程序

在MvvmCross中是否可以将视图模型注入到视图的构造函数中

在Windows的情况下,它可能是-如果你能找出谁构造了视图(它会在某个地方的框架中?),如果你能覆盖它以使用IoC容器

然而,从实际的角度来看,这可能是更多的努力比它的价值

相反:

  • 您可以只使用默认的MvvmCross ViewModel构造/查找机制,该机制在导航到时提供ViewModel(然后还允许使用导航参数)
  • 您可以发明自己的服务提供商查找-例如,在视图构造函数期间(或其他地方)使用
    Mvx.Resolve
所以我想知道这是否可行,或者我是否需要在视图内部手动创建视图模型


从问题的这一部分,我猜有些事情只是“出了问题”——但很难从问题中知道什么。要尝试调试它,您可以检查调试跟踪,您可以与正在运行的示例应用进行比较,您可以单步执行代码,等等。如果所有其他操作都失败,请下拉到一个非常简单的入门应用程序,并尝试调试…

我认为您的看法是正确的,在注入构造函数时,您付出的努力超过了它的价值。我不知道视图模型是作为导航参数的一部分传递的,但它确实解决了这个问题。谢谢你的帮助。
Mvx.RegisterType<IHomeViewModel, HomeViewModel>();