所以基本上我需要直接从另一个 viewmodel 实例化一个 viewmodel,我正在使用 MVVMLight,人们说我可以使用 MVVMLight ViewModelLocator 来做到这一点,我在我的源 ViewModel A 上尝试了这行代码,以实例化目标 ViewModel B
SimpleIoc.Default.GetInstance<BViewModel>();
没有用,有什么想法吗?
所以基本上我需要直接从另一个 viewmodel 实例化一个 viewmodel,我正在使用 MVVMLight,人们说我可以使用 MVVMLight ViewModelLocator 来做到这一点,我在我的源 ViewModel A 上尝试了这行代码,以实例化目标 ViewModel B
SimpleIoc.Default.GetInstance<BViewModel>();
没有用,有什么想法吗?
如果我理解正确,您需要在 View B 的构造函数中使用您的代码,如下所示:
this.DataContext = SimpleIoc.Default.GetInstance<BViewModel>();
这样,您的视图与 BViewModel 的实例相结合,在您的示例中,您只是在实例化它。
您可以在此处找到有关构建 ViewModel 和 View 的更多信息:
http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx#sec17
但我确实对 WP7 编程有一些经验,并建议从 View 的构造函数中使用 IOC Container。这是因为您传递的参数将使用 WP7 页面的标准导航方法推送到您的视图中。