Start Debugging
2023-10-09 Atualizado 2023-11-05 dotnetdotnet-8wpf Edit on GitHub

WPF Open / Select Folder Dialog (OpenFolderDialog do .NET 8)

Use o novo `OpenFolderDialog` do .NET 8 no WPF para deixar os usuários abrirem e selecionarem uma ou várias pastas. Substitui o antigo workaround com FolderBrowserDialog do WinForms.

O .NET 8 traz um novo OpenFolderDialog para o Windows Presentation Foundation (WPF). Com isso, os usuários da aplicação podem navegar e selecionar uma ou várias pastas.

O uso é simples: crie um novo OpenFolderDialog, informe um Title e um InitialDirectory. Se quiser permitir que seus usuários selecionem várias pastas, defina Multiselect como true. Em seguida, uma simples chamada a ShowDialog() exibe o dialog.

var dialog = new OpenFolderDialog()
{
    Title = "Foo",
    InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal),
    Multiselect = true
};

string folderName = "";
if (dialog.ShowDialog() == true)
{
    folderName = dialog.FolderName;
}

Como em qualquer dialog, se o usuário clicar no botão Select Folder, ShowDialog() retorna true; caso contrário, retorna false.

O dialog de abrir pasta usa o Windows Explorer para navegar e selecionar as pastas, assim como o OpenFileDialog. Por isso, o dialog tem uma aparência diferente dependendo do seu sistema operacional. No Windows 11, fica parecido com isto:

WPF open folder dialog on Windows 11.

Em termos de saída, você tem várias propriedades para obter as pastas selecionadas pelo usuário. Para seleção única:

dialog.FolderName -> "C:\Users\test\OneDrive\Documents\Fiddler2"
dialog.SafeFolderName -> "Fiddler2"

No caso de seleção múltipla, dá para usar:

dialog.FolderNames -> [ "C:\Users\test\OneDrive\Documents\Fiddler2", "C:\Users\mariu\OneDrive\Documents\Graphics" ]
dialog.SafeFolderNames -> [ "Fiddler2", "Graphics" ]

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Voltar