地理的な地図に似たものを表示するビューがあり、このビュー内にいくつかUserControls
あります。それぞれに DataContext に関する関連情報が表示されますが、それぞれ異なる視点から表示されます。
次に、私の目標は、マウスを 1 つの UserControl の上に置いて、すべての UserControl の機能を強調表示することですが、もちろん、この強調表示の視覚的なスタイルは各 UserControl に固有です。
たとえば、マップにパスがあり、その標高プロファイルがグラフにプロットされている場合、標高プロファイルの上にマウスを移動して、そのグラフの上に垂直線を動的に表示し、同時にいくつかのマーカーを動的に表示したいと考えています。マップに表示され、その逆も同様です。
ビュー自体で数値を使用することでこれを行うことができます。これは、各 UserControls で双方向のデータバインドになりますが、概念的な問題がいくつかあります。
- 従来のデータ バインディングは ViewModel のプロパティを前提としていますが、「マウス ハイライト」機能は View に固有のものであり (オブジェクトの状態を表すものではありません)、そのようなプロパティを ViewModel に追加して汚染することは絶対にしたくありません。ビュー固有のコードを使用。
- UserControls が作成されると、それらの DataContext は ViewModel またはそのプロパティの一部になります。UserControl の一部の DataContext を別のオブジェクトに変更する必要があることは、推奨できる方法でも簡単な方法でもないようです。
- 少しハックして、
Slider
折りたたみ表示で View を作成し、各 UserControl で ElementBinding を使用することもできますが、それでも、View と含まれる UserControl の間で ElementBinding を行うにはどうすればよいでしょうか?
したがって、主な質問は次のとおりです。
ビュー (ViewModel ではありません!) の単一のプロパティを、その特定のビューに含まれる多くの UserControls にバインドするにはどうすればよいですか?
すべてが単一のモノリシック ビューである場合、ElementBinding を使用することは私にとって明らかな選択ですが、異なるクラス (1 つのビューと多くの UserControls) では、ElementBinding の実行方法がわかりません。私が欲しいもの。