我正在尝试在 MS Paint 中复制颜色选择器对话框的功能。我有一个具有 3 个属性的对话框的 ViewModel。
- 公共颜色 SelectedColor
- 这是选定的颜色
- 我将它绑定到显示当前选定颜色的 Border 元素的背景
- 公共双选择器左
- 自定义颜色区域中选择器的左侧位置
- 我将它绑定到选择器的左值。选择器是 Canvas 中的一个元素
- 画布的 x 轴是色调
- 公共双选择器顶部
- 自定义颜色区域中选择器的顶部位置
- 我将它绑定到选择器的最高值。选择器是 Canvas 中的一个元素
- 画布的y轴是饱和度
问题是它们都是相互关联的。当我从预定义的颜色区域中选择一种颜色时,我需要更新 SelectedColor,这又会更新 SelectorLeft 和 SelectorTop,以便自定义颜色区域中的选择器位于正确的位置。此外,当我在自定义颜色区域中移动选择器时,我需要更新 SelectedLeft 和 SelectedTop,它们都应该更新 SelectedColor。这些关系导致堆栈溢出。
(哈!StackOverflow 上列出的堆栈溢出问题)
我可以采取另一种方法来解决这个问题,消除一个属性对另一个属性的依赖。或者也许定义不同的属性来绑定?
谢谢,马特