4

私はこのコードを持っており、それを使用して、ユーザーが自分のライブラリから画像を選択し、それをアプリの背景として使用できるボタンを表示しています。

を作成しPhotoChooserTask、カメラを表示するように設定し、タスクの完了時に実行する必要があるメソッドにバインドします。ボタンは を表示してタスクを開始しますPhotoChooserTask。完了時に行うアクションは非常に簡単です。ブール値を設定して画像ソースを更新するだけです。

PhotoChooserTask pct_edit = new PhotoChooserTask();
pct_edit.ShowCamera = true;
pct_edit.Completed += pct_edit_Completed;
Button changeImageButton = new Button { Content = "Change Image" };
changeImageButton.Tap += (s, e) =>
{
    pct_edit.Show();
};


void pct_edit_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            bi.SetSource(e.ChosenPhoto);
            IsRebuildNeeded = true;
        }
    }

問題は、それが表示されないPhotoChooserTaskことですが、例外が発生し、

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
        if (Debugger.IsAttached)
        {
            Debugger.Break();
        }
    }

App.xaml.cs

PhotoChooserTask同じクラスに別のクラスがあり、これは正常に機能するため、これは奇妙に見えます。

どうしたの?

VisualStudio は何が例外なのかさえ教えてくれないので、それを理解する方法はありません!

編集:

呼び出すと例外がスローされることがわかりました

pct_edit.Show(); 

ボタンのタップイベントで。

4

2 に答える 2

1

セレクターをクラスのフィールドとして定義する必要があります。PhotoChooser のページ スコープが必要です。次に、コンストラクターでそれをサブスクライブします。これはMSDN hereに記載されています

class SomeClass
{
   readonly PhotoChooserTask pct_edit = new PhotoChooserTask();

   SomeClass()
   {
       pct_edit.ShowCamera = true;
       pct_edit .Completed += new EventHandler<PhotoResult>(pct_edit_Completed);
   }
}
于 2013-08-07T14:06:41.503 に答える