WPFでWindows ExplorerフォルダーUIの機能を複製する最良の方法は何ですか?
-
20-09-2019 - |
質問
だから私は使っています FileSystemWatcher
プレイリストを入力して更新します。 Windows Explorerの多くの機能を複製したいのですが、最も重要です。
*インラインの名前の変更
*スローダブルクリックして名前を変更します
私はこれをかなり手間をかけているので、ホイールを再実装するよりも簡単な方法があるかもしれません。たぶん、私はどういうわけか、アプリケーションでWindows Explorerウィンドウをコントロールとしてホストすることができますか?
解決
アプリケーションで実際のWindows Explorerウィンドウをホストすることは可能ですが、危険にさらされています。XP vs Vista vs Win7ではテクニックが異なり、あらゆる種類の低レベルのものを扱うでしょう。試してみることを強くお勧めします。
あなたの最良の選択肢は次のとおりです。
- microsoft.win32.openfileedialogを使用する必要がある場合、または簡単に適応できる場合、または
- 独自の機能をコーディングするか、非常に勇敢である場合:
- オプションでは、その位置とサイズをアプリケーションの上に強制しようとするコードを使用して、別のエクスプローラーウィンドウを起動します(これも難しいです...)
インラインの名前変更機能に関するメモ
インラインの名前変更と遅いダブルクリックの機能を変更することは、実装するのが非常に些細なことです。
あなたのビューでモデルを追加します:
- 「NewName」文字列依存関係プロパティ
- プロパティチェンジコールバックを使用した「変更」ブール依存関係プロパティ。 「名前変更」がtrueになると、名前をnewNameにコピーします。 falseの場合、newName!=名前の名前をファイルに更新名の名前を変更します。
DataTemplateに、「名前」にバインドされたテキストブロックを「NewName」にバインドしたテキストボックスに置き換える「名前変更」にトリガーを追加します。
これらのイベントハンドラーを追加します: *キーダウンイベント:F2が押されている場合、トグルの名前変更。 ENTERが押されて名前が変更されている場合は、名前変更= FALSEを設定します。 ESCが押され、コピー名をnewNameに名前を変更し、名前を変更= falseに変更した場合。 * LostFocusイベント:名前変更= false * Containerでの選択変更イベント:最後の選択変更の記録タイムスタンプ。 * Mousedownイベント:左クリックと選択が0.5秒前に変更された場合、名前を変更= trueを設定します
エクスプローラービューの他の多くの機能は、グループ化や複数の列など、実装も簡単です。
お役に立てれば。