在我的Page.Loaded
活动中,我有以下代码:
FolderPicker fp = new FolderPicker();
fp.SuggestedStartLocation = PickerLocationId.ComputerFolder;
fp.FileTypeFilter.Add("*");
var f = await fp.PickSingleFolderAsync(); // <-- Exception
...
Exceeption Details:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
这在桌面上运行正常。
我尝试在FolderPicker中设置其他属性,但它没有改变任何东西。我还尝试在清单中添加功能。
我也看到有人建议这可能是因为选择器不止一次被调用,但在这里似乎并非如此,因为.Loaded
事件只被调用一次
我在这里错过了什么吗?
答案 0 :(得分:1)
您不应该使用fp.FileTypeFilter.Add("*");
ms说你应该给它一个特殊类型。
你应该写picker.FileTypeFilter.Add(".jpg");
无论此类文件中是否存在该文件夹都没有影响。
我只说:llwr(辣鸡微软)
您需要添加特殊文件类型,但没有任何内容。
答案 1 :(得分:0)
通常桌面和移动应用的生命周期略有不同。不知道为什么在移动设备上,异常是在特定情况下抛出,但是MSDN says,理论上异常可以在应用程序被捕捉时发生。这不是那种情况,但可能会抛出异常,因为应用程序可能还没有完全准备就绪。在我尝试过不同的活动时,您应该可以在 GotFocus 事件中打开选择器:
private async void MainPage_GotFocus(object sender, RoutedEventArgs e)
{
this.GotFocus -= MainPage_GotFocus;
FolderPicker fp = new FolderPicker();
fp.FileTypeFilter.Add(".jpg");
var f = await fp.PickSingleFolderAsync();
}