FolderBrowserDialog в WPF (.NET 5)
Мне необходимо выбирать путь до директории при помощи FolderBrowserDialog, но чтобы его использовать необходимо обратиться к пространству имен System.Windows.Forms, в котором FolderBrowserDialog отсутствует. Я поискал в COM библиотеках и нашел какую-то зависимость System_Windows_Forms, но это не решило мою проблему, полагаю, эта библиотека была не совместима с моим проектом (у меня .NET 5). Так же, в зависимостях я не нашел System.Windows.Forms. Есть ли какие-нибудь замены FolderBrowserDialog в WPF?
Ответы (2 шт):
Этот код в файле *.csproj позволил мне обращаться к пространству имен System.Windows.Forms:
<PropertyGroup>
//тут еще теги
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
Так же, вопрос решает NuGet пакет: Install-Package Ookii.Dialogs.Wpf а в C# классе я написал:
VistaFolderBrowserDialog dialog = new VistaFolderBrowserDialog();
dialog.ShowDialog();
К сожалению, в 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();
Это даст такой диалог:
