【问题标题】:Is it possible for MVVM light ViewModelLocator generate the viewmodel dynamically based on viewMVVM light ViewModelLocator是否可以根据视图动态生成视图模型
【发布时间】:2017-10-24 02:12:45
【问题描述】:

MVVM light ViewModelLocator 是否可以识别正在加载的视图,然后动态生成视图模型?

public ViewModelLocator()
{
    ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

    //Find the current window/ user control loading
    ContentControl control = 

    //Generate the View model dynamically

    //Register to dynamically created view model
    SimpleIoc.Default.Register<SelectedViewModel>();

}

【问题讨论】:

  • 不知道,但这是个好主意!自动生成视图模型?
  • 是的,约翰,这样我以后就不必注册所有不同的视图模型了,这样对于下一个视图,我可以只添加视图和视图模型,然后一切都可以在定位器中没有任何代码更改的情况下发生.
  • 为什么不只是创建一个新的 ViewModel 然后将 VM 传递给 View 构造函数并在代码中创建它。这不是更多的代码,而且你在做什么更明显。
  • @rolls,那样我必须做很多编码。 MVVM-Light MVL 大大减少了编码。我看到的唯一问题是每次添加新视图时,我(我团队中的某个人)必须向 VML 添加一个属性变量来处理它,所以我问了这个。

标签: c# mvvm mvvm-light viewmodellocator


【解决方案1】:

如果您想避免 ViewModelLocator 编码切换到基于命名约定的框架,如 MVVMCross。在 MVVMCross 中,您根本没有定位器,只需创建一个 MyViewModel 对象和一个 MyView 视图:框架根据名称约定匹配它们。

【讨论】:

  • 我喜欢它,但这会带走我在 MVVM 光下获得的好处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多