1. ホーム
  2. c#

フォルダ選択ダイアログ WPF

2023-10-04 08:31:30

質問

私はWPF4アプリケーションを開発しており、私のアプリケーションでは、アプリケーションが何か(ファイル、生成されたレポートなど)を保存するフォルダをユーザーが選択できるようにする必要があります。

私の要件。

  • 標準的なフォルダツリーを表示する機能

  • フォルダーを選択する機能

  • WPF のルック & フィールでは、このダイアログは Windows 2000 や Win9x ではなく、Windows Vista/7 用に設計された最新のアプリケーションの一部のように見える必要があります。

私が理解しているように、2010 年まで (.Net 4.0) 標準のフォルダー ダイアログはありませんが、おそらくバージョン 4.0 では何らかの変更があるのでしょうか?

あるいは、残りのすべてのことは、旧式の WinForms ダイアログを使用することですか? それが私が必要とするものを行う唯一の方法である場合、どのように私はそれを Win9x ではなく Vista/7 スタイルに近づけることができますか?

いくつかのフォーラムで、そのようなダイアログの実装を見ましたが、Windows 95 のような古い醜いアイコンを使っていました。本当に見栄えがよくありません。

どのように解決するのですか?

ずっと前に私のブログで書きましたが、WPF の共通ファイル ダイアログのサポートは本当にひどいものです (少なくとも 3.5 ではそうでした。バージョン 4 では確認していません)-しかし、それを回避するのは簡単です。

正しいマニフェストをアプリケーションに追加する必要があります。これにより、モダン スタイルのメッセージ ボックスとフォルダ ブラウザ (WinForms FolderBrowserDialog) が得られますが、WPF ファイル オープン/保存ダイアログは得られません。これはこれらの 3 つの投稿で説明されています (説明を気にせず、解決策が必要なだけなら、3 番目に直接進んでください)。

幸いなことに、開く/保存ダイアログは Win32 API の非常に薄いラッパーであり、Vista/7 スタイルを取得するために正しいフラグで簡単に呼び出すことができます (マニフェストを設定した後)。