2

我们将 Caliburn.Micro 用于一个简单的 Windows Phone 7 应用程序,该应用程序拍摄特定库存商品的照片,然后保存图像和包含用户输入信息的 xml 文件。

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

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

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

4

3 回答 3

2

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

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

于 2010-12-16T02:04:12.877 回答
1

我不能专门为 Caliburn 说话,但是使用 MV-VM 模式,您的视图模型仅通过突变与模型进行通信。

在您的情况下,我希望该模型是 Stock Items 的集合以及一些其他信息,例如当前选择的 stock item。拍照的行为会创建一个新的 Stock Item,将其添加到集合中,然后将当前选定的 Stock Item 设置为刚刚创建的那个。

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

于 2010-12-16T01:38:31.927 回答
1

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

于 2011-04-17T13:26:41.880 回答