2012-02-14 8 views
1

Windows Phone 7でCameraCaptureTaskを呼び出すボタンを持つ単一のページを持つ簡単なアプリケーションがあります。これにはMVVMパターンを使用します。私のコードビハインドはきれいで、私はビヘイビアを使ってViewModelへのボタンクリックレスポンスをオフロードしました。私のコードは次のようになります。CameraCaptureTask完了イベントが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の()メソッドを使用すると、カメラが正常にデバイスに登場します。しかし、写真を撮って「Accept」を押すと、「cameraCaptureTask_Completed(オブジェクト送信者、Photoresult e)」イベントハンドラが呼び出されることはありません。私はここに何かを逃していますか

ありがとうございます!

答えて

0

あなたはショーだけを持っているときに、なぜこれを中継していますか?

は、コンストラクタの外と呼び出されるメソッド

+0

それはありがとう!私はコードを可能な限りきれいに保つさまざまな方法で遊んでいました。これは不明な質問かもしれませんが、ViewModelのコンストラクタでそのオブジェクトのインスタンス化では不十分な理由はありますか? – Cranialsurge

+0

私はそのカメラがまだ "読み込まれていない"と信じています。ロードされたイベントが発生するまで、UI /コンポーネントはロード/使用できません – MyKuLLSKI

0

にcameraCaptureTaskを移動してみてくださいあなたは、デバッガと接続されたデバイスでこれを行うときにWPConnectツールを使用していますか?

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

Windows Phoneの接続ツールを使用すると、Zuneソフトウェアを実行せずにデバイスにシリアルまたはUSB接続を確立することができます。物理的なWindows Phoneデバイス上でアプリケーションをテストするときは、通常、Zuneソフトウェアが実行されています。ただし、ローカルメディアデータベースをロックするため、Zuneソフトウェアの実行中に、写真チューザとカメラランチャタスクと対話するアプリケーションをテストすることはできません。

+0

私はしましたが、代わりにエミュレータを使用するように切り替えました。それはどちらもうまくいかなかった。 – Cranialsurge

関連する問題