我想创建一个行为类似于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
工作方式:在这种情况下,调用页面的相同实例被保留。
我的问题是:如何在不影响框架导航和无意中创建调用页面的新实例的情况下显示我的库中的页面?