2010-12-16 51 views
2

我们使用Caliburn.Micro获取一个简单的Windows Phone 7应用程序,该应用程序拍摄特定库存项目的照片,然后用用户输入的信息保存图像和xml文件。在Windows Phone 7 ViewModels之间进行通信

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

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

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

回答

1

我无法专门针对Caliburn说话,但是通过M-V-VM模式,您的视图模型仅通过突变与模型进行通信。

就你而言,我期望该模型是库存项目的集合以及一些其他信息,例如当前选定的库存项目。拍摄照片创建一个新的股票项目,将其添加到集合中,然后将当前选定的股票项目设置为刚刚创建的项目。

当您导航到新视图时,将从模型中拾取当前选定的棍子项目。

2

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

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

1

使用由奈杰尔给出的方法会奏效。但是请不要忘记,ProductView中的Id属性不会在构造函数中设置。它在OnActivate()方法中设置。