C# 4.0 通用应用程序(Windows Phone 8.1)将后台搞得一团糟

C# 4.0 通用应用程序(Windows Phone 8.1)将后台搞得一团糟,c#-4.0,windows-phone,windows-phone-8.1,win-universal-app,C# 4.0,Windows Phone,Windows Phone 8.1,Win Universal App,我创建的通用应用程序的windows phone 8.1部分中的导航出现问题。我会尽力解释的 我有以下内容(很抱歉,我的间距/制表符在下面被弄乱了!) 我正在使用WP文件选择器选择照片,但是 一个或按后退键,它将转到位于 我的App.xaml.cs 在异步方法(WPPickedFile)中,选择 photo或按back键,检查args.Files.Count是否有 是否返回了一张照片,我已将以下代码行添加到 看看这是否会有所不同: if(((框架)Window.Current.Content.

我创建的通用应用程序的windows phone 8.1部分中的导航出现问题。我会尽力解释的

我有以下内容(很抱歉,我的间距/制表符在下面被弄乱了!)

我正在使用WP文件选择器选择照片,但是 一个或按后退键,它将转到位于 我的App.xaml.cs

在异步方法(WPPickedFile)中,选择 photo或按back键,检查args.Files.Count是否有 是否返回了一张照片,我已将以下代码行添加到 看看这是否会有所不同:

if(((框架)Window.Current.Content.backbackbackdepth>2)
((框架)Window.Current.Content.BackStack.Remove(((框架)
Window.Current.Content),backbackback[2];
if(((帧)Window.Current.Content.backbackbackdepth>1)
((框架)Window.Current.Content.BackStack.Remove(((框架)
Window.Current.Content),backbackback[1]);
但这一点都不重要。如果我按后退键 我的
BackStageDepth
不是选择一张照片,而是2,并且 包含主页(1)和新项目页(2)。如果我选择一张照片, 它包含这两个页面,还包含捕获页面(3)

但我不明白这种奇怪的行为。假设我按了后面 键,但未选择照片。我的
BackStageDepth
为2,仅包含 主页(1)和新项目页面(2),所以当我得到行 如上所述,它跳过>2的项并删除新项 第(2)页。当我检查时,它被删除,我的
BackStageDepth
已降至1

这不是我想要实现的,但我正在努力理解我想要的 继续。无论如何,当我继续运行代码时,我会得到我的新项目页面(2) 显示,并且自按下后退键后预览图像仍为空 在WP文件选择器上

现在奇怪的是,当我再次按下后退键时,我把一个 位于中的
硬件按钮上的断点
NavigationHelper,但如果我选中(框架)
backbackbackdepth,它现在告诉我它是2
而不是1。如果我选中它,
(Frame)Window.Current.Content)。BackStack[0]
仍然是我的主页(1),但
(框架)窗口。当前。内容)。backbackback[1]
现在设置为捕获页面(3),在我检查时未列出该页面 在方法
WPPickedFile

为什么呢?我完全困惑,但我不知道我做错了什么,但这显然与我在启动WP文件选择器时离开应用程序的事实有关,就像我没有一样,即从主页(1)转到 捕获页面(3),无需单击按钮启动WP文件选择器, 导航按预期工作

如有任何建议,将不胜感激

谢谢


PS:很抱歉格式不好,但我无法修复它

我的后背实际上并没有搞糟。我艰难地发现windows phone 8.1可能有多个帧,我完全

关于在调用FilePicker之前导航回上一页,我最终找到了一种方法,它看起来很干净,不调用Nagiviation,因此也不调用Backback

if (rootFrame.Content is CaptureTypePage)
{
  if (rootFrame.CanGoBack)
    rootFrame.GoBack();
}
重要的部分是:

case ActivationKind.PickSaveFileContinuation:
  var fileSavePickerPage = rootFrame.Content as IFileSavePickerContinuable;
  if (fileSavePickerPage != null)
  {
    fileSavePickerPage.ContinueFileSavePicker(args as 
    FileSavePickerContinuationEventArgs);
  }
  break;
continuationManager.Continue(continuationEventArgs,根框架)

通过调用
GoBack
,它将删除CaptureType页面,并将根框架的
CurrentSourcePageType
设置为预览窗口所在的“新项目页面”

然后,我在“新项目页面”上实现了接口
IFileOpenPickerContinuable
,该接口由continuationManager调用

我希望这能帮助别人,不会像我那样浪费时间!如果你有一个更干净的方法做这件事,请添加到这个职位。我很想知道

谢谢

if (rootFrame.Content is CaptureTypePage)
{
  if (rootFrame.CanGoBack)
    rootFrame.GoBack();
}
case ActivationKind.PickSaveFileContinuation:
  var fileSavePickerPage = rootFrame.Content as IFileSavePickerContinuable;
  if (fileSavePickerPage != null)
  {
    fileSavePickerPage.ContinueFileSavePicker(args as 
    FileSavePickerContinuationEventArgs);
  }
  break;