我有一个WPF桌面应用程序,我想使用UWP FolderPicker API来选择一个目录。我的应用程序使用UWP打包项目,因此它是作为appx构建和运行的。我添加了Windows和WindowsBase引用,我的项目构建和运行。但是,在尝试使用文件夹选择器时出现运行时错误。我的代码如下:
private async void OnGetDirectory(object parameter)
{
var folderPicker = new Windows.Storage.Pickers.FolderPicker();
folderPicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add("*");
Windows.Storage.StorageFolder folder = await folderPicker.PickSingleFolderAsync();
if (folder != null)
{
// Application now has read/write access to all contents in the picked folder
// (including other sub-folder contents)
Windows.Storage.AccessCache.StorageApplicationPermissions.
FutureAccessList.AddOrReplace("PickedFolderToken", folder);
}
else
{
}
}
我得到的错误是System.Exception:await folderPicker.PickSingleFolderAsync();
和错误“Invalid window handle. (Exception from HRESULT: 0x80070578)'
我缺少什么,或者甚至可以使用WPF应用程序中的FolderPicker?
答案 0 :(得分:1)
您可以在FolderPicker
命名空间中使用普通的Windows窗体文件夹对话框FolderBrowserDialog
,而不是UWP System.Windows.Forms
。(例如,请参阅this question)。
如果您想使用StorageFolder
,可以拨打StorageFolder.GetFolderFromPathAsync
方法,也可以使用System.IO.Directory
或System.IO.DirectoryInfo
等经典文件夹API。
答案 1 :(得分:0)
根据UWP APIs available to a packaged desktop app (Desktop Bridge)文章,某些功能区域尚未经过全面测试或目前正在按预期运行。 "文件和文件夹选择器"您在列表中使用的功能。此功能的详细说明如下:
打包的应用程序具有完整的文件系统访问权限,不需要UWP选择器。
因此,您的UWP打包项目可能无法完成FolderPicker
。请尝试使用WPF本身支持的文件相关API。
更多详情请参阅this document。