2012-02-14 176 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