如何在通过 Desktop App Converter 转换为 UWP 应用程序的 WPF 应用程序中打开文件对话框

How can I open a File Dialog in WPF app that is being converted to a UWP app via Desktop App Converter

我有一个用 WPF 创建的应用程序。当前在 WPF 中,我正在使用 Microsoft.Win32.SaveFileDialog 文件选择器让用户 select 一个要保存到的文件位置。

我正在通过 Desktop App Converter 应用程序将此应用程序转换为 Windows Store 兼容应用程序。当我在 UWP 转换的应用程序中使用 Win32 选择器时,它只是挂起并最终崩溃,所以这似乎并不令人高兴。

看起来有一个 UWP 兼容的文件选择器 Windows.Storage.Pickers.FileSavePicker,可以使用 Nuget 包 UWPDesktop

不幸的是,这给了我以下警告 -

Type 'Windows.Storage.Pickers.FileSavePicker' can only be used in UWP apps, not Desktop or Centennial

这对我来说似乎很清楚,所以,最后我的问题是 我应该为桌面转换器 UWP 应用程序使用什么对话框选择器?

好像有两个选项 -

  1. 有某种我不知道的第三种类型的文件选择器,它与两个框架都兼容。
  2. 我在应用程序中使用某种检查来查看哪个框架处于活动状态(以某种方式)并使用适当的文件选择器。

提前致谢!

您可以继续在转换后的 WPF 应用程序中使用 Win32 选择器。这是受支持的,预计会起作用。

回答您在这里看到崩溃的原因: 如果您安装了 Office 2016,最近 Office 更新引入了一个错误,导致转换后的应用程序的文件选择器对话框崩溃。此错误的修复应该很快会在服务更新中推出。

要确认这确实是您遇到的错误,您可以查看应用的崩溃报告,您应该会在模块 grooveex.dll.

中看到崩溃

谢谢, Stefan Wick - Windows 开发者平台

我最终构建了一个示例应用程序,其中仅包含一个空应用程序中存在问题的对话框,并计划通过 MS 将其发送给 Stefan。

当然,一切看起来都不错,所以我又玩了一会儿,最终弄清楚了可能发生了什么。

我在执行对话框之前 运行 一些异步代码,看起来会无提示地失败,导致应用程序无限期挂起。

我认为这对任何人都没有帮助,只是想结束循环。