MVVM+;数据上下文+;数据模板&x2B;混合=问题

MVVM+;数据上下文+;数据模板&x2B;混合=问题,mvvm,datatemplate,datacontext,blend,Mvvm,Datatemplate,Datacontext,Blend,我目前正在一个WPF项目中使用MVVM,一切都很好。 我在MasterViewModel中使用currentView属性管理一个主视图和多个详细视图。通过使用datatemplate,我将视图绑定到viewmodel。 事实上,我的主视图有一个contentcontrol,其内容属性绑定到我的CurrentView属性。当我将此currentview属性设置为viewmodel或其他属性时,它将调用相应的模板 我的问题是,使用这种方法,我的细节视图没有显式的datacontext,因为它是由我的

我目前正在一个WPF项目中使用MVVM,一切都很好。 我在MasterViewModel中使用currentView属性管理一个主视图和多个详细视图。通过使用datatemplate,我将视图绑定到viewmodel。 事实上,我的主视图有一个contentcontrol,其内容属性绑定到我的CurrentView属性。当我将此currentview属性设置为viewmodel或其他属性时,它将调用相应的模板

我的问题是,使用这种方法,我的细节视图没有显式的datacontext,因为它是由我的datatemplate放置的。因此,在blend中,当我打开视图编辑其设计时,我没有数据绑定到视图。如果我将datacontext设置为我的detailview,那么在blend中我可以看到我可以绑定的所有数据,但在运行时,datatemplate设置的datacontext会被我的detailview中的datacontext集覆盖,因此在运行时我没有数据

有人知道我如何创建一个好的MVVM项目吗?视图由datatemplates管理,datacontext可以通过Blend看到


谢谢,

我在这篇文章中解决了一个类似的问题:
我有一篇关于这个问题的博文:


我的帖子是关于在blend中显示数据,而不必在运行时显示甚至创建数据。

Hi Steeve。您有任何代码要共享吗?其他问题,为什么您的viewmodel绑定到视图?相反,viewmodels绑定到视图。嗨,Ray,事实上,我使用的原理与您在这里看到的相同:您有一个具有currentView属性(作为对象)的主视图模型。您有两个详细视图模型(让我们命名为theim VMdetail1和VMdetail2)。在我的主视图中,我有一个ContentController,其源绑定到MasterViewModel.CurrentView属性。在我的xaml资源中,我有如下数据模板:在我的视图中,我没有datacontextDetailViews DataContext是由datatemplate在运行时设置的。将currentview更改为viewmodel1时,它将使用datatemplate加载相应的视图。我的问题是blend无法在detailview中看到要绑定的数据,因为没有datacontext。如果我在我的文章中添加一个datacontext,你的文章真的很好。这是解决那个问题的最好办法。我花了10个小时才找到“假”数据上下文。谢谢!当你说花了10个小时,你认为我能把这篇文章改进一点吗?