在Windows Phone 7中的ViewModel之间进行通信

时间:2010-12-16 00:54:53

标签: c# windows-phone-7 camera wizard caliburn.micro

我们使用Caliburn.Micro作为一个简单的Windows Phone 7应用程序,它拍摄特定库存项目的照片,然后保存图像和一个用户输入信息的xml文件。

我有第一个屏幕,点击按钮,“CameraCaptureTask”获取照片,我读取照片并保存到存储但现在我不知道如何将用户带到另一个视图并传递文件名和在第一个视图。

我使用查询字符串尝试了NavigationService.Navigate(“...”),但我无法在ViewModel中获取Querystring。

我很困惑,说当你制作向导时,你如何从一个视图传递到另一个视图 - 不使用单例或黑客方式。有一个很好的Caliburn.Micro方式吗?

3 个答案:

答案 0 :(得分:2)

当您使用Caliburn Micro时,它会自动将查询字符串中的键映射到View Model上的属性。

例如,如果您导航到“/Views/ProductView.xaml?Id=42”,那么ProductViewModel.Id将等于42。

答案 1 :(得分:1)

我不能特别代表Caliburn,但是使用M-V-VM模式,您的View Models只能通过突变与模型进行通信。

在您的情况下,我希望该模型是股票项目的集合以及一些其他信息,例如当前选择的股票项目。拍摄照片的行为会创建一个新的库存项目,将其添加到集合中,然后将当前选定的库存项目设置为刚刚创建的库存项目。

导航到新视图时,将从模型中选取当前选定的操纵杆项目。

答案 2 :(得分:1)

使用nigel给出的方法可行。但是请不要忘记ProductView中的Id属性不会在构造函数中设置。它在OnActivate()方法中设置。