FolderBrowserDialog в WPF (.NET 5)

Мне необходимо выбирать путь до директории при помощи FolderBrowserDialog, но чтобы его использовать необходимо обратиться к пространству имен System.Windows.Forms, в котором FolderBrowserDialog отсутствует. Я поискал в COM библиотеках и нашел какую-то зависимость System_Windows_Forms, но это не решило мою проблему, полагаю, эта библиотека была не совместима с моим проектом (у меня .NET 5). Так же, в зависимостях я не нашел System.Windows.Forms. Есть ли какие-нибудь замены FolderBrowserDialog в WPF?


Ответы (2 шт):

Автор решения: Aarnihauta

Этот код в файле *.csproj позволил мне обращаться к пространству имен System.Windows.Forms:

<PropertyGroup>
   //тут еще теги
   <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

Так же, вопрос решает NuGet пакет: Install-Package Ookii.Dialogs.Wpf а в C# классе я написал:

VistaFolderBrowserDialog dialog = new VistaFolderBrowserDialog();
dialog.ShowDialog();
→ Ссылка
Автор решения: VladD

К сожалению, в WPF есть лишь встроенный диалог выбора файла, но не каталога, хотя запрос на включение такого диалога есть.

Если вы не хотите тащить за собой Winforms, обычно используют неофициальный nuget-пакет WindowsApiCodePack (их много, но официального на данный момент нету). Например, можно взять вот этот, для чего добавьте в ваш .csproj следующую строку:

<PackageReference Include="Microsoft-WindowsAPICodePack-Shell" Version="1.1.4" />

(возможно, версия на тот момент, когда вы читаете ответ, будет поновее).

После этого ваш код будет выглядеть так:

using Microsoft.WindowsAPICodePack.Dialogs;

...

CommonOpenFileDialog ofd = new() { IsFolderPicker = true };
ofd.ShowDialog();

Это даст такой диалог:

а ещё добавим ножек — получился диаложек

→ Ссылка