2012-02-14 101 views
1

不费一枪我有一个简单的应用程序有一个单一的页面调用中的Windows Phone 7的CameraCaptureTask我使用MVVM模式为这个按钮。我后面的代码是干净的,我已经使用行为卸载了对ViewModel的按钮点击响应。我的代码如下所示:CameraCaptureTask完成事件视图模型

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导致我的相机成功地在设备上。然而,一旦我完成拍照并点击“接受”,在“cameraCaptureTask_Completed(对象发件人,Photoresult E)”事件,永远不会被调用。我在这里错过了什么吗?

在此先感谢!

回答

0

你为什么中继此当你有走过场?

尝试移动cameraCaptureTask出来的构造,并为调用的方法

+0

这做到了感谢!我只是玩弄不同的方式,尽可能保持代码的清洁。这可能是一个蹩脚的问题,但是,为什么在ViewModel的构造函数中实例化该对象是不够的? – Cranialsurge 2012-02-14 22:45:47

+0

我相信它是因为相机尚未“加载”。直到Loaded事件被炒鱿鱼 – MyKuLLSKI 2012-02-14 22:58:06

0

您使用的是WPConnect工具,当你做到这一点与所连接的调试器和设备?

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

的Windows Phone的连接工具可以帮助您建立串口或USB连接到设备不运行Zune软件。当您在物理Windows Phone设备上测试应用程序时,通常Zune软件正在运行。但是,你是不是能够测试Zune软件运行时,与照片选择器和摄像头发射任务进行交互的应用程序,因为它锁定本地媒体数据库。

+0

我做的UI /组件不加载/可用,但后来我切换到使用模拟器来代替。那也行不通。 – Cranialsurge 2012-02-14 22:46:39