〰️

【C#, Livet, WPF】フォルダ選択ダイアログを使用する

2023/01/29に公開

ファイル選択ダイアログは標準(LivetCask.Messagingパッケージ)で含まれているのに
フォルダ選択ダイアログは何故か拡張(LivetExtensionsパッケージ)を追加で参照する必要がある
ダイアログの種類が複数あるからかな?
image.png
という訳でプロジェクトに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