等待来自子对象/视图模型的事件

时间:2013-01-29 09:52:36

标签: c# mvvm async-await mvvmcross

我正在使用MVVM Cross构建WinRT / WP8应用程序,其中一个要求是用户能够上传图像。就主要应用而言,“图片”只是一个包含一些元数据的字节数组 - 实际上它来自于它的业务。我所拥有的(到目前为止WinRT尚未实现手机)是一个“IPictureSource”接口,带有GetBytes方法和2个实现 - LivePicture和FileSystem。每个人都做了拍摄/查找图像所需要做的事情,并以所需的格式返回。

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

我想要做的是抽象这些,可能有两个子视图模型,一个专用于摄像头(如果可用则启用自身),一个用于文件系统,或者甚至是集合,如果设备具有多个一台摄像机,为用户提供最大的选择。

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

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

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

1 个答案:

答案 0 :(得分:3)

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