Как использовать UWP FolderPicker в настольном приложении WPF c # - PullRequest
0 голосов
/ 06 июня 2018

У меня есть настольное приложение WPF, и я хочу использовать API UWP FolderPicker для выбора каталога.Мое приложение использует проект упаковки UWP, поэтому оно создается и запускается как приложение.Я добавил ссылки на 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)'

Чего мне не хватает или этоможно ли использовать FolderPicker из приложения WPF?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вместо UWP FolderPicker вы можете просто использовать обычный диалог папки Windows Forms - FolderBrowserDialog в System.Windows.Forms пространстве имен (см. этот вопрос для примера).

Есливы хотите работать с StorageFolder, вы можете вызвать метод StorageFolder.GetFolderFromPathAsync или использовать классические API-интерфейсы папок, такие как System.IO.Directory или System.IO.DirectoryInfo.

0 голосов
/ 06 июня 2018

Согласно API-интерфейсам UWP, доступным для упакованной настольной прикладной программы (Desktop Bridge) , некоторые функциональные области еще не полностью протестированы или в настоящее время функционируют, как предполагалось.Функция «Выбор файлов и папок», которую вы использовали только в списке.Подробное описание этой функции следующее:

Упакованные приложения имеют полный доступ к файловой системе и не нуждаются в средствах выбора UWP.

Так что FolderPicker может не завершитьсяподдерживается в вашем проекте упаковки UWP.Пожалуйста, попробуйте использовать файловые API-интерфейсы, которые поддерживаются в самом WPF.

Подробнее см. этот документ .

...