Wpf 正确的MVVM设计模式-ViewModel和DataContext

Wpf 正确的MVVM设计模式-ViewModel和DataContext,wpf,silverlight,windows-phone-7,windows-phone-8,mvvm-light,Wpf,Silverlight,Windows Phone 7,Windows Phone 8,Mvvm Light,我开始玩Windows Phone开发。我正在使用MVVM ligth,并尝试遵循良好的实践。但最近我遇到了一个问题: 可以在ViewModel中使用ViewModel作为属性吗 我的场景是,我有一个MainViewModel,它是一个全景对象。此全景对象由几个Panoramaitem(注释、日历和关于控件/页面)组成 我的问题是,如果MainPage.xaml有一个MainViewModel,我可以将其他ViewModel作为属性(NotesViewModel、CalendarViewMode

我开始玩Windows Phone开发。我正在使用MVVM ligth,并尝试遵循良好的实践。但最近我遇到了一个问题: 可以在ViewModel中使用ViewModel作为属性吗

我的场景是,我有一个MainViewModel,它是一个全景对象。此全景对象由几个Panoramaitem(注释、日历和关于控件/页面)组成

我的问题是,如果MainPage.xaml有一个MainViewModel,我可以将其他ViewModel作为属性(NotesViewModel、CalendarViewModel、AboutViewModel)放到MainViewModel中吗?在这种情况下,它们将从MainPage继承DataContext,我只会绑定到MainViewModel的属性。或者我应该使用定位器模式来允许其他页面/控件获得自己的ViewModel,而不继承DataContext吗


如果一个控件有一个ViewModel,它可以吗?还是应该更适合页面?

如果父视图模型和子视图模型是相关的:当然可以,它不会违反模式

此设置允许您跨页面和控件重用视图模型和视图