CameraCaptureTask已完成事件未在ViewModel中触发

时间:2012-02-14 21:09:02

标签: silverlight windows-phone-7 xaml

我有一个简单的应用程序,它有一个带有按钮的页面,该按钮调用Windows Phone 7中的CameraCaptureTask。我使用MVVM模式。我的代码背后是干净的,我已经使用行为卸载了对ViewModel的按钮点击响应。我的代码如下所示:

 public class MainViewModel : ViewModelBase
{
    private readonly CameraCaptureTask cameraCaptureTask;

    /// <summary>
    ///   Initializes a new instance of the MainViewModel class.
    /// </summary>
    public MainViewModel()
    {
        if (IsInDesignMode)
        {
            // Code runs in Blend --> create design time data.
        }
        else
        {
            cameraCaptureTask = new CameraCaptureTask();
            cameraCaptureTask.Completed += cameraCaptureTask_Completed;
            CaptureCommand = new RelayCommand(() => CaptureImage());
        }
    }

    public RelayCommand CaptureCommand { get; set; }

    private void cameraCaptureTask_Completed(object sender, PhotoResult e)
    {
        if (e == null || e.TaskResult != TaskResult.OK)
        {
            return;
        }
        else
        {
            // TODO
        }
    }

    private object CaptureImage()
    {
        cameraCaptureTask.Show();
        return null;
    }
}

现在,当我运行我的应用程序并点击绑定到'CaptureCommand'RelayCommand的按钮时,我在'CaptureCommand()'方法中点击了断点,它触发了CameraCaptureTask的'Show()'方法,导致了我的相机成功上映到设备上。但是,一旦我完成拍照并点击“接受”,就不会调用'cameraCaptureTask_Completed(object sender,Photoresult e)'事件处理程序。我在这里错过了什么吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

为什么你在演出时转发这个?

尝试将cameraCaptureTask移出构造函数并移入调用的方法

答案 1 :(得分:0)

当您使用调试器和连接的设备执行此操作时,您是否正在使用WPConnect工具?

http://msdn.microsoft.com/en-us/library/gg180729(v=VS.92).aspx

  

Windows Phone Connect工具允许您在不运行Zune软件的情况下与设备建立串行或USB连接。在物理Windows Phone设备上测试应用程序时,通常Zune软件正在运行。但是,在Zune软件运行时,您无法测试与照片选择器和相机启动器任务交互的应用程序,因为它会锁定本地媒体数据库。