2010-07-19 36 views
2

特别在MVVM Light工具箱中?我还没有深入研究Prism代码,看看它在WPF UI中对区域做了什么。看起来像使用MVVM Light中的消息传递和ViewModelLocator,你可以做类似的事情....你能吗?任何人都可以举例说明你如何做到这一点?基本上我想点击一个按钮并将两个不同的视图模型加载到UI中。也许更好的解释方式是类似Outlook的导航窗格功能。如何在没有棱镜的WPF中做区域?

回答

4

这可以很容易地在WPF中完成,没有任何框架。

只需在您的应用程序(或在窗口/用户控制级别)设置DataTemplate,将视图模型映射到您希望为该视图模型显示的视图。

然后,您可以只使用ContentPresenter,并将其内容绑定到您的ViewModel中的单个属性(可以是类型object)。当你想将“region”设置为特定的视图时,只需将该属性设置为适当的ViewModel,WPF就会自动为你连接所有的东西。

+0

甜,我觉得应该有一种XAML方式。谢谢。 – nportelli 2010-07-19 20:44:04

+0

好的。我一定不够理解。我想我没有设置DataTemplate。不知道如何将ViewModel映射到View。我假设它是这样的,所以我没有得到像我现在这样的对象名称。但这是否意味着视图必须知道要显示的视图模型? – nportelli 2010-07-21 15:46:47

+1

@nportelli:某个地方的View层需要指定“ViewModel XXX转到View YYY”。而已。阅读我的MVVM系列的“模板”部分(可以选择查看示例代码)。它使用这种技术,并介绍了如何使DataTemplates的工作:http://reedcopsey.com/series/windows-forms-to-mvvm/ – 2010-07-21 16:01:27