这(某种程度上)与MS Surface的SDK示例购物车中的情况类似。
我有一个具有两个ScatterViews的应用程序。第一个覆盖了完整的表面窗口(“表面”)。第二个驻留在一个TagVisualization对象('pod')中。可能有多个pod可用(如果桌面上有多个标签)。
我希望能够将ScatterViewItem从“pod”拖动到“surface”或另一个“pod”。我在检测ScatterViewItem是否离开它的ScatterView父节点时没有任何问题。此外,重新设置ScatterViewItem的父关系没有问题。
但是,我想要检测项目被拖放在哪个ScatterView上。在SDK示例中,他们使用了一个位于ScatterViews之下的可视元素(在本例中是一个椭圆)。VisualTreeHelper.HitTest用于确定接触是否在椭圆上。如果是,则找到“已连接”的ScatterView。
我不认为这是一个非常优雅的解决方案。我不希望在其中添加视觉元素,只是为了检测联系人是否通过ScatterView。
有没有更好的方法来完成这种“点击测试”?
谢谢,巴特
发布于 2009-04-07 20:50:12
首先,我有一种预感,用Surface拖放很快就会变得容易很多,所以我不会花太多时间为一个额外的元素而烦恼。
但是把这当作一个一般性的问题-你不一定要添加一个视觉元素来做点击测试,但点击测试仍然是确定在给定的点上是否有特定元素的最好方法。
您正在讨论的示例不仅仅是添加了用于点击测试的椭圆,它还用作'pod‘的背景。所以他们只想在触点在那个椭圆上时处理下降,因为那个椭圆定义了边界。另一种方法可能是设置散点视图的背景,并对该控件执行hittest。然后,如果你想把“pod”的边界改成矩形以外的东西,你就需要对散点视图应用一个剪切路径。
https://stackoverflow.com/questions/719218
复制相似问题