〰️
【C#, Livet, WPF】フォルダ選択ダイアログを使用する
ファイル選択ダイアログは標準(LivetCask.Messagingパッケージ)で含まれているのに
フォルダ選択ダイアログは何故か拡張(LivetExtensionsパッケージ)を追加で参照する必要がある
ダイアログの種類が複数あるからかな?
という訳でプロジェクトにLivetExtensionsパッケージをNugetで追加、下記のような感じで使用する
.xaml
<l:InteractionMessageTrigger
MessageKey="SelectFolder"
Messenger="{Binding Messenger}">
<l:FolderBrowserDialogInteractionMessageAction />
</l:InteractionMessageTrigger>
.cs
var res = await Messenger.GetResponseAsync(new FolderSelectionMessage() {
MessageKey = "SelectFolder",
Title = "タイトル",
SelectedPath = "C:/",
Multiselect = true,
DialogPreference = FolderSelectionDialogPreference.FolderBrowser,
});
var selectedFolders = res.Response; // null or string[]
ちなみにFolderSelectionMessage.DialogPreference
の値によって微妙に異なるダイアログが表示されるため、各自用途に合わせて選択すると良い
Discussion