Caliburn Micro を使用して、アプリケーション用の Visual Studio スタイル インターフェイスを作成しています。
アプリケーションの下部にドッキングされている「エラー」ビューにすべて表示される複数のウィンドウで複数のエラーが発生する可能性があります。ドキュメントに変更が加えられると、VM にエラーが通知され、ソース オブジェクトにクエリを実行できるように、適切な通知メカニズムを実装することができました。
ただし、ダブルクリックしてエラーの原因に移動する方法を理解するのに問題があります。
ドキュメント ビューのテキスト ボックスに「説明」をバインドすると、「説明が必要です」という検証メッセージが表示されるとします。メッセージをダブルクリックすると、ユーザーは問題のドキュメントに移動し、テキスト ボックスにフォーカスする必要があります。
IViewAware
メッセージを提供する検証オブジェクトには、(インターフェイスとして) ビューモデルへの参照が既に含まれています。これによりGetView()
、ビューへの参照を取得するために呼び出すことができます。このアプローチを使用して、ビューのバインディングを列挙し、特定のプロパティにバインドされているコントロールを見つけようとしましたが、これは非常に遅く、力ずくのようなものです-運が良ければアプローチ
この問題へのアプローチに関する推奨事項はありますか? 私の他の唯一の考えは、「フォーカス」アクションの責任をビュー自体に渡し、特定のプロパティへのナビゲーションの要求を処理する方法を決定することです。おそらく、添付プロパティを使用して、一意のプロパティ識別子によって特定のコントロールを識別します。アプリケーションは、このリストをディクショナリにキャッシュして、処理を高速化できます (すべての処理は、アプリの読み込み時に事前に実行されます)。
正しい場所にジャンプするには行番号が必要なだけなので、Visual Studio は標準のコード エディター ウィンドウに対してこれを非常に簡単に実装すると思います。