【发布时间】:2009-04-06 13:29:36
【问题描述】:
我目前在 WPF 项目中使用 MVVM,一切正常。 我有一个主视图和许多详细视图,我使用 MasterViewModel 中的 currentView 属性进行管理。通过使用数据模板,我将视图绑定到视图模型。 事实上,我的主视图有一个内容控件,其内容属性绑定到我的 CurrentView 属性。当我将此 currentview 属性设置为 viewmodel 或其他时,它会调用相应的模板。
我的问题是,使用它,我的详细视图没有明确的数据上下文,因为它是由我的数据模板放置的。所以在混合中,当我打开视图以编辑其设计时,我没有数据可以绑定到我的视图。如果我为我的详细视图设置了一个数据上下文,在混合中我可以看到我可以绑定的所有数据,但是在运行时,由数据模板设置的数据上下文被我的详细视图中设置的数据上下文覆盖,所以我在运行时没有数据。
有谁知道我如何创建一个好的 MVVM 项目,视图由数据模板管理,数据上下文可以通过 Blend 看到?
谢谢,
【问题讨论】:
-
嗨,斯蒂夫。你有代码要分享吗?
-
其他问题,为什么你的视图模型绑定到视图?应该是相反的,视图模型绑定到视图。
-
嗨,Ray,事实上,我使用的原理与您在此处看到的相同:codeproject.com/KB/WPF/InternationalizedWizard.aspx 您有一个具有 currentView 属性(作为对象)的主视图模型。您有两个详细视图模型(让我们将它们命名为 VMdetail1 和 VMdetail2)。在我的主视图中,
-
我有一个 contentControler,它的源绑定到 MasterViewModel.CurrentView 属性。在我的 xaml 资源中,我有这样的数据模板:
在我看来,我没有数据上下文 -
DetailViews 数据上下文由数据模板在运行时设置。当您将当前视图更改为 viewmodel1 时,它会使用数据模板加载相应的视图。我的问题是混合你看不到要在细节视图中绑定的数据,因为没有数据上下文。如果我在我的中添加一个数据上下文
标签: mvvm datatemplate datacontext blend