CaptureFileAsyncメソッドのように動作するライブラリを作成したいと思います。つまり、メソッド呼び出しで、標準の戻るナビゲーションで全画面ページを開き、呼び出し元に結果を返します。
CaptureFileAsync が呼び出されるのと同じ方法で呼び出せるようにしたい:
var dialog = new Library.Dialog();
var result = await dialog.Show();
メソッドでは、Show
現在自分のページに移動しTask
、呼び出し元が待機できる を返しています。
public Task<string> Show()
{
var task = new Task<string>(() => result);
var frame = ((Window.Current.Content) as Frame);
frame.Navigate(typeof(DialogPage));
return task;
}
ダイアログが閉じられているときに呼び出しますtask.Start()
(戻るナビゲートによってキャンセルされるか、ボタンを押すことによって確認されます)。これにより、待機中の呼び出し元に結果が返されます。
問題は、Frame.GoBack()
が呼び出されると、前のページの新しいインスタンスが作成され、結果が古いインスタンスに返されて表示されなくなることです。これはどのようCaptureFileAsync
に機能するかではありません。その場合、呼び出しページの同じインスタンスが保持されます。
私の質問は次のとおりです。フレーム ナビゲーションに影響を与えず、誤って呼び出しページの新しいインスタンスを作成することなく、ライブラリからページを表示するにはどうすればよいですか?