我想創建一個類似CaptureFileAsync方法的庫,即在方法調用時,它將打開一個帶有標準後退導航的全屏頁面並將結果返回給調用者。如何創建一個像CameraCaptureUI.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
的工作原理:在這種情況下,保存了調用頁面的相同實例。
我的問題是:如何在不影響幀導航的情況下顯示來自我的庫的頁面,並無意中導致創建調用頁面的新實例?
聽起來是個好主意。我正在考慮今天上班的路上。我會讓你知道它是如何工作的。 –