如何检测Surface接触是否在ScatterView上?

时间:2009-04-05 16:17:29

标签: pixelsense visualtreehelper

这是一种类似于MS Surface的SDK示例购物车中的情况。

我有两个ScatterViews的应用程序。第一个覆盖完整的Surface窗口('surface')。第二个驻留在TagVisualization对象('pod')中。可能有多个可用的容器(如果表中有多个标记已关闭)。

我希望能够将ScatterViewItem从'pod'拖到'surface'或另一个'pod'。我在检测ScatterViewItem是否离开其ScatterView父级时没有任何问题。此外,重新显示ScatterViewItem也没有问题。

但是,我想检测正在拖动项目的ScatterView。在SDK示例中,他们使用了一个可视元素(在本例中为椭圆),它位于ScatterViews下方。 VisualTreeHelper.HitTest用于确定接触是否在椭圆上。如果是这样,就会找到“已连接”的ScatterView。

我不认为这是一个非常优雅的解决方案。我不希望在那里放置一个可视元素,只是为了检测一个联系人是否在ScatterView上。

有没有更好的办法来完成这种“打击测试”?

谢谢, 巴特

1 个答案:

答案 0 :(得分:1)

嗯,首先,我有一种预感,即使用Surface很快就会让拖拽和拖放变得更容易,所以我不会花费太多时间来磨损一个额外的元素。

但是把它作为一个普遍的问题来处理 - 你不一定要添加一个视觉元素来做测试,但是测试仍然是确定特定元素是否存在的最佳方法点。

你正在谈论的样本不只是添加椭圆进行测试,它还作为'pod'的背景。因此,当接触超过椭圆时,他们只想处理掉落,因为椭圆定义了边界。另一条路线可能是设置散点图的背景,并针对该控件执行hittest。然后,如果您想将“pod”的边界更改为矩形以外的其他内容,则需要将剪切路径应用于散点图。