Windows phone 8 如何对不同的页面(视图)使用相同的ViewModel

Windows phone 8 如何对不同的页面(视图)使用相同的ViewModel,windows-phone-8,mvvm,view,viewmodel,caliburn.micro,Windows Phone 8,Mvvm,View,Viewmodel,Caliburn.micro,我正在寻找一种方法,将一个ViewModel用于两个不同的视图(页面)。我知道Caliburn.Micro中有,我读了很多,但我不确定它是否是我想要的,或者它在Windows Phone上是如何工作的 目前,我有一个视图ItemPage.xaml和一个视图模型ItemPageViewModel。我使用此视图/视图模型添加新项目并显示现有项目。根据模式(添加、显示等),我需要显示/隐藏或启用/禁用一些UI元素,并显示不同的AppBar按钮。 我不想通过绑定到属性来控制这些UI元素,而是想用正确的U

我正在寻找一种方法,将一个
ViewModel
用于两个不同的
视图(页面)
。我知道Caliburn.Micro中有,我读了很多,但我不确定它是否是我想要的,或者它在Windows Phone上是如何工作的

目前,我有一个视图
ItemPage.xaml
和一个视图模型
ItemPageViewModel
。我使用此视图/视图模型添加新项目并显示现有项目。根据模式(添加、显示等),我需要显示/隐藏或启用/禁用一些UI元素,并显示不同的AppBar按钮。 我不想通过绑定到属性来控制这些UI元素,而是想用正确的UI元素创建两个独立的页面(视图)


最好对两个
页面使用相同的
ViewModel
,以避免重复代码。因此,我的上述用例是否可能与Windows Phone的Caliburn.Micro一起使用?

答案在很大程度上取决于视图的“托管”位置以及视图是视图优先还是视图模型优先。你能在这一点上扩展一下吗?@NigelSampson你说的“托管”是什么意思?我认为它首先是ViewModel,因为我使用了
navigationService.UriFor().Navigate()导航。这种方法的一个问题是,您要求CM导航到给定视图模型的视图,但希望该视图模型具有两个不同的视图,CM如何知道您指的是哪个VM?我想我误解了多视图的含义。我认为这意味着对一个视图模型有不同的视图(在WP:Pages的情况下)。这可以通过CM来完成,但需要注意的是,您需要为视图定位器提供“上下文”,这在导航服务中目前是不可能的。