在WP7中使用Caliburn.Micro将viewmodel共享到多个视图

时间:2011-04-08 02:00:35

标签: windows-phone-7 mvvm viewmodel caliburn.micro caliburn

我目前正在开发一个需要同一个视图模型的多个视图的项目。让我用这种方式描述:

  • ViewModel:CustomerDetailsViewModel.cs(继承自Screen类)
  • 查看:CustomerDetails.cs(此视图将CustomerDetailsViewModel作为datacontext并由Caliburn.Micro自动设置)
  • 查看:CustomerInfo.cs(现在这是我想要共享CustomerDetailsViewModel的视图,可能已经通过CustomerDetails视图修改了一些数据)

我目前正在使用NavigationService导航到CustomerInfo视图。有没有办法将当前viewmodel的引用传递给用户在caliburn.micro中导航到的视图?

提前致谢

IDEV

2 个答案:

答案 0 :(得分:2)

使用附加属性cal:Bind.Model =“{Binding}”将视图绑定到视图模型。 请参阅http://caliburnmicro.codeplex.com/wikipage?title=All%20About%20Actions“查看第一个”部分。

或者您也可以查看cal:View.Context =“MyContext”附加属性,如下所述:http://caliburnmicro.codeplex.com/wikipage?title=Screens%2c%20Conductors%20and%20Composition同一ViewModel上的多个视图”部分。

答案 1 :(得分:1)

在App.xaml.cs中添加一两个属性。你在这里放置的内容将在应用程序的整个生命周期中持续存在(请记住,墓碑将导致此属性的值丢失)。如果要传递ViewModel,然后将App.xaml.cs中的关联属性setyour到视图模型,然后在新页面加载时从同一属性读取。