Windows phone 7 Caliburn Micro:在芒果中拍照
我正在尝试将WP7.1 Mango中的任务启动器与最新版本的Caliburn Micro一起使用,但是一旦任务完成,我的代码就不会被调用。也许我在某个地方做了些傻事,但我看不到在哪里。以下是我为一个示例复制应用程序所做的工作,您可以从以下网站下载: 1) 创建一个新的WP7.1应用程序 2) 在解决方案中添加Lib文件夹,添加cmdll,并添加对它们的引用 3) 按照CM文档的规定更改生成的文件,并添加引导程序 现在,到目前为止,一切正常,应用程序开始时没有问题。然后,我会按照以下步骤拍照: 4) 在主页中向视图添加一个按钮,并在其VM中添加一个名为TakePhoto的相应方法 5) 按如下方式更改VM: a) 在构造函数中注入一个只读的IEventAggregator成员 b) 添加OnActivate/OnActivate覆盖以允许聚合器订阅和取消订阅此VM c) 添加TakePhoto方法,它只是:Windows phone 7 Caliburn Micro:在芒果中拍照,windows-phone-7,caliburn.micro,Windows Phone 7,Caliburn.micro,我正在尝试将WP7.1 Mango中的任务启动器与最新版本的Caliburn Micro一起使用,但是一旦任务完成,我的代码就不会被调用。也许我在某个地方做了些傻事,但我看不到在哪里。以下是我为一个示例复制应用程序所做的工作,您可以从以下网站下载: 1) 创建一个新的WP7.1应用程序 2) 在解决方案中添加Lib文件夹,添加cmdll,并添加对它们的引用 3) 按照CM文档的规定更改生成的文件,并添加引导程序 现在,到目前为止,一切正常,应用程序开始时没有问题。然后,我会按照以下步骤拍照:
_aggregator.RequestTask<CameraCaptureTask>();
\u aggregator.RequestTask();
d) 从接口IHandle派生VM并实现它:
public void Handle(TaskCompleted<CameraCaptureTask> message)
{
if (message.Result.TaskEventArgs.TaskResult != TaskResult.OK) return;
SetPhoto(message.Result.TaskEventArgs.ChosenPhoto);
}
公共无效句柄(任务已完成消息)
{
if(message.Result.TaskEventArgs.TaskResult!=TaskResult.OK)返回;
SetPhoto(message.Result.TaskEventArgs.ChosenPhoto);
}
现在,当我点击按钮时,相机任务在模拟器中启动,我可以拍照;然后我被带回我的应用程序,但什么也没发生,我的Handle方法也没有被调用。您可以在那里放置一个断点来确认这一点。
那么,我做错了什么?您需要处理
TaskCompleted
而不是TaskCompleted
。因为Caliburn.Micro使用任务的Completed
事件的事件args创建TaskCompleted
消息,该事件发生在CameraCaptureTask
的情况下。所以您应该实现IHandle
,您的Handle方法应该如下所示
public void Handle(TaskCompleted<PhotoResult> message)
{
if (message.Result.TaskResult != TaskResult.OK) return;
SetPhoto(message.Result.ChosenPhoto);
}
公共无效句柄(任务已完成消息)
{
if(message.Result.TaskResult!=TaskResult.OK)返回;
SetPhoto(message.Result.ChosenPhoto);
}
您需要处理TaskCompleted
而不是TaskCompleted
。因为Caliburn.Micro使用任务的Completed
事件的事件args创建TaskCompleted
消息,该事件发生在CameraCaptureTask
的情况下。所以您应该实现IHandle
,您的Handle方法应该如下所示
public void Handle(TaskCompleted<PhotoResult> message)
{
if (message.Result.TaskResult != TaskResult.OK) return;
SetPhoto(message.Result.ChosenPhoto);
}
公共无效句柄(任务已完成消息)
{
if(message.Result.TaskResult!=TaskResult.OK)返回;
SetPhoto(message.Result.ChosenPhoto);
}