2017-05-23 16 views
1

MVVM light ViewModelLocator是否可能识别哪个视图正在加载,然后动态生成视图模型?是否有可能为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>(); 

} 

My Project structure is given below

+0

不知道,但这是一个好主意!自动生成视图模型? –

+0

是的约翰,所以我将来不需要注册所有不同的视图模型,这样在下一个视图中我可以添加视图和视图模型,然后在定位器中没有任何代码改变的情况下,所有的都可以发生。 – ParkAtStreet

+0

为什么不只是创建一个新的ViewModel,然后将VM传递给View构造函数并在代码中创建它。这不是更多的代码,更明显的是你在做什么。 – rolls

回答

1

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

+0

我喜欢它,但这会带走我在MVVM灯中获得的好处。 – ParkAtStreet