在FileSavePicker的文档中,它声明:
警告,如果您尝试显示文件选择器,而您的应用程序被关闭,文件选择器将不会显示,并将引发异常。您可以避免这一点,确保您的应用程序没有被抢断,或通过打开它之前,您调用文件选择器。
目前,我正在检查应用程序是否被抢断,并且我的应用程序在每种情况下的响应都不同。我的默认行为也没有显示FileSavePicker,所以我不能只是尝试然后回到其他东西上。我也不想强迫应用程序松开。
然而,ApplicationViewState在8.1之后就不再受欢迎了。在该文档和相关搜索中,建议开发人员直接访问窗口大小,以确定正确的行为。但是,如果视图状态不再可用,我如何知道文件选择器是否会抛出异常?这个应用程序的大小被认为是“支离破碎”的?
而且,我使用的是C++,所以与C++兼容的答案将是非常棒的。我也不介意看到C#的解决方案。
发布于 2014-08-27 02:42:44
关于FileSavePicker文档,我认为这只是一个疏忽。您引用的文本来自Windows 8版本,在我看来,它似乎没有为Windows8.1进行更新。
如果您查看FileOpenPicker文档,您会发现它已被更新:
Windows 8中的重要文件()--如果您试图在应用程序崩溃时显示文件选择器,将不会显示文件选择器并引发异常。您可以避免这一点,确保您的应用程序没有被抢断,或通过打开它之前,您调用文件选择器。...Note,即Windows8.1并没有定义特定的抓取窗口大小。相反,用户可以将应用程序的大小调整到任意宽度,降到最低。因此,如果您的应用程序只部署在Windows8.1上,您可以忽略函数,并在本主题的示例代码中调用它。
上面的最后一句(粗体)本质上说,如果您在Windows8.1下运行,您可以忽略状态并安全地打开文件对话框。
为了测试上面的内容,我使用VS 2012创建了一个带有文件保存选择器(在C#中)的Windows 8应用程序。我相信C++的结果也会一样,但我不能百分之百肯定。
我应该注意,我的测试应用程序不检查视图状态,总是尝试打开一个文件对话框。
当应用程序在Windows 8下运行时处于崩溃状态,应用程序将导致错误。在Windows8.1下运行时,相同的应用程序(相同的二进制)允许打开文件保存对话框,而不会出现问题。正如前面提到的,在Windows8.1中没有中断状态,所以我测试应用程序的方式是将应用程序打开到最小宽度(320像素)。
概括地说:
https://stackoverflow.com/questions/25516313
复制相似问题