MS ペイントのカラー セレクタ ダイアログの機能を複製しようとしています。3 つのプロパティを持つダイアログ用の ViewModel があります。
- パブリック カラー SelectedColor
- 選んだ色はこれ
- これを、現在選択されている色を表示する Border 要素の背景にバインドします
- public double SelectorLeft
- カスタム カラー領域のセレクターの左側の位置
- これをセレクターの左の値にバインドします。セレクターは Canvas 内の要素です
- キャンバスの x 軸は色相です
- public double Selector上へ
- カスタム カラー領域のセレクターの上部の位置
- これをセレクターのトップ値にバインドします。セレクターは Canvas 内の要素です
- キャンバスの y 軸は彩度です
問題は、それらがすべて相互に関連していることです。定義済みの色領域から色を選択するときは、SelectedColor を更新する必要があります。これにより、SelectorLeft と SelectorTop が更新され、カスタム カラー領域のセレクターが正しい場所に配置されます。また、カスタム カラー エリア内でセレクターを移動すると、SelectedLeft と SelectedTop を更新する必要があり、どちらも SelectedColor を更新する必要があります。これらの関係により、スタック オーバーフローが発生します。
(Ha!、StackOverflow にリストされているスタック オーバーフローの問題)
これを解決するために、あるプロパティの別のプロパティへの依存を取り除く別のアプローチはありますか。それとも、バインドする別のプロパティを定義しますか?
ありがとう、マット