处理wpf中点击次序的最佳方法

时间:2014-02-21 12:56:07

标签: c# wpf data-binding mvvm

假设我有一个填充矩形的画布,数据绑定到视图模型。

现在我想“选择”一个矩形,所以我在矩形类中添加了一个Select命令,并将其绑定到矩形。 这很好。

问题是这种选择会产生什么后果。最简单的例子是选择一个矩形应该取消选择任何一个矩形。

解决这个问题的一种方法是从

更改命令(使用relay命令)
_ => this.Selected = true

_ => ParentVM.SetSelected(this)

这感觉有点讨厌。一些DI框架的“松散”双向依赖只是在这个例子中感到做作。

我猜测另一种方法是在“WPF级别”通过使用事件的冒泡来解决这个问题,但我不确定这是一个更好的解决方案吗?

任何人都有任何好的建议吗?

编辑:在下面关于继承“选择器”的评论中得到了很好的建议。这是一个很好的建议,但不幸的是我遗漏了上面的一个细节,我认为这不重要。

真正的问题是我想首先选择一个矩形,然后选择另一个矩形,然后得到它们之间的距离。所以其中一个是“第一次选择”,另一个是“第二次选择”。

1 个答案:

答案 0 :(得分:0)

除非我不理解要求,否则我会这样做。

  1. 创建一个属性(在VM上,如果使用MVVM),它将保存对已选择的最后一个矩形的引用。
  2. 要求每个矩形在选择时报告自身,或者通过拥有对上述属性的绑定引用,或者使用commanding操作报告自己作为参考。
  3. 在创建的属性的setter中,取旧的(如果存在)和新的属性,确定距离并将其放在VM上的另一个属性上,然后保留对当前所选属性的引用。