0

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に機能するかではありません。その場合、呼び出しページの同じインスタンスが保持されます。

私の質問は次のとおりです。フレーム ナビゲーションに影響を与えず、誤って呼び出しページの新しいインスタンスを作成することなく、ライブラリからページを表示するにはどうすればよいですか?

4

3 に答える 3

2

PopupHelperを見てください。

ポップアップを使用するすべての問題を抽象化し、アニメーションを処理し、コントロールへのアクセスを無効にします。

于 2012-10-14T11:17:27.270 に答える
1

すべての UI をポップアップに配置できます。

于 2012-09-21T04:31:07.683 に答える