1

我正在使用 MVVM Cross 构建一个 WinRT/WP8 应用程序,其中一个要求是用户能够上传图像。就主应用程序而言,“图片”只是一个带有一些元数据的字节数组——它的实际来源与它无关。我所拥有的(到目前为止,对于 WinRT,还没有实现电话)是一个“IPictureSource”接口,带有一个 GetBytes 方法和 2 个实现 - LivePicture 和 FileSystem。每个都做它需要做的事情来获取/查找图像,并以所需的格式返回它。

该应用程序目前有点笨拙,因为 UI 层正在嗅探设备功能,并且仅在相机不可用时才允许文件系统

我想要做的是将这些抽象一点,可能有两个子视图模型,一个专用于相机(如果可用,则启用它自己)和一个用于文件系统,或者甚至可能是一个集合,如果设备有多个相机,给用户最大的选择。

无论哪种方式,我都想要一个设计,让我有多个图片来源,它们都能够返回适当的数据。

在过去,我会在 IPictureSource 上公开一个“PictureTaken”事件,然后循环访问来自父对象的子对象,注册每个事件并通过一个公共处理程序处理它们。

我不明白为什么这仍然行不通,但是由于我有一点喘息的空间来充分利用新技术(特别是异步/等待),现在有更好的方法来做到这一点,尤其是一个我可以进行单元测试吗?

4

1 回答 1

3

如果您想摆脱这些事件处理程序,请在此处查看我的答案。也许您的 MVVM 框架已经提供了一个事件聚合器。

于 2013-01-29T10:04:33.223 回答