WPFには、フォルダ選択ダイアログが用意されていません。
WPFで、フォルダ選択ダイアログを使用するには、自分で、ダイアログを作成するか、ツールキットに用意されてものを使用します。
フォルダ選択ダイアログを利用するためのダイアログは、いくつか存在します。
たとえば、この文章を書いている時点で、nugetで、「Folder Selection Dialog」を検索すると、934パッケージが見つかります。
Windows API Code Packを利用して、フォルダ選択ダイアログを使用する利点は、Webサイトで利用方法が紹介されていることです。
Windows API Code Packのフォルダ選択ダイアログを利用方法を紹介しているWebサイト
WPFなど組み込みのフォルダ選択ダイアログを使用する場合、Windows API CodePackを使用する例が紹介されています。
WindowsAPICodePack をプロジェクトにインストールする
Windows API Code Packのフォルダ選択ダイアログを利用するためには、プロジェクトに、次のWindows API Code Packをインストールする必要があります。
※Shellをインストールすれば、依存関係により、Coreは自動でインストールされます。
- WindowsAPICodePack-Shell
- WIndowsAPICodePack-Core
Windows API Code Packのフォルダ選択ダイアログの基本的な使い方
メインウインドウでは、ボタンのクリックイベントで、フォルダ選択ダイアログを呼び出し、取得したフォルダパスを格納するためのTextBlockがあります。
MainWindow.xaml
<Window x:Class="FolderSelectionDialog.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="100" Width="400">
<DockPanel>
<Button DockPanel.Dock="Top" Name="GetFolderName" Click="GetFolderName_Click">
フォルダ名を取得
</Button>
<TextBlock Name="FolderPath" />
</DockPanel>
</Window>
Windows API Code Packのフォルダ選択ダイアログで、使用する名前空間は、「using Microsoft.WindowsAPICodePack.Dialogs;」です。
ダイアログの名前(キャプション)は、Textプロパティでも指定できますが、インスタンスを生成する際に、引数で指定するとコードが見やすくなります。
MainWindow.xaml.cs
using Microsoft.WindowsAPICodePack.Dialogs;
using System.Windows;
namespace FolderSelectionDialog
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void GetFolderName_Click(object sender, RoutedEventArgs e)
{
// ダイアログのインスタンスを生成
var dialog = new CommonOpenFileDialog("フォルダーの選択")
{
// 選択形式をフォルダースタイルにする IsFolderPicker プロパティを設定
IsFolderPicker = true,
InitialDirectory = @"H:\C#プロジェクト" //開いておくフォルダ
};
// ダイアログを表示
if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
FolderPath.Text = dialog.FileName;
}
}
}
}
プログラムの動作
プログラムを実行するとメインウインドウが表示されます。
フォルダ名を取得ボタンを押すと、フォルダ選択ダイアログが表示されます。
ダイアログで、フォルダを選択し、「フォルダを選択」ボタンを押すと、ダイアログが閉じられ、メインウインドウに、フォルダのパスが表示されます。
メソッド | 説明 |
---|---|
IsFolderPicker | フォルダ選択ダイアログの場合はtrue |
InitialDirectory | 最初に開くフォルダ |
Title | ダイアログのタイトル(キャプション) |
自分で独自ライブラリを作成する場合
独自ライブラリを自分で作成し、WPFでフォルダ選択ダイアログを実現する情報を提供しているサイト
実装の参考になります。