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)」イベントハンドラが呼び出されることはありません。私はここに何かを逃していますか
ありがとうございます!
それはありがとう!私はコードを可能な限りきれいに保つさまざまな方法で遊んでいました。これは不明な質問かもしれませんが、ViewModelのコンストラクタでそのオブジェクトのインスタンス化では不十分な理由はありますか? – Cranialsurge
私はそのカメラがまだ "読み込まれていない"と信じています。ロードされたイベントが発生するまで、UI /コンポーネントはロード/使用できません – MyKuLLSKI