代码之家  ›  专栏  ›  技术社区  ›  Gaby

HitTest属性

  •  2
  • Gaby  · 技术社区  · 16 年前

    我刚接触Silverlight,正在尝试阅读一个Silverlight教程,该教程使用HitTest方法来了解鼠标何时位于控件上。 但不幸的是,我看不到任何使用此名称的方法。

    HitTest方法在哪里?这是因为我在使用Silverlight4吗?有什么替代方法吗?

    2 回复  |  直到 16 年前
        1
  •  3
  •   AnthonyWJones    16 年前

    旧版本(3.0之前的版本)确实有HitTest方法。在Silverlight 3和4中,您可以使用 VisualTreeHelper.FindElementsInHostCoordinates 实现类似目标的方法。

    例如,下面的代码可以在表面上的鼠标事件中使用,您可以在该事件上拖动项目。它将确定拖动项的任何部分是否与目标项重叠。 警告空气代码

    var container = (UIElement)sender;
    var transform = draggedItem.TransformToVisual(container);
    
    Rect rect = new Rect(transform.Transform(new Point(0, 0)), 
       new Size(draggedItem.ActualWidth, draggedItem.ActualHeight);
    
    bool hit = VisualTreeHelper.FindElementsInHostCoordinates(rect, container)
      .Any(elem => elem == targetItem);
    
        2
  •  0
  •   RationalGeek    16 年前

    我想你在找鼠标输入和鼠标保存事件。

    http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseenter%28VS.95%29.aspx

    您可以订阅这些事件并设置一个标志,指示鼠标在元素上,或者执行应用程序所需的其他操作。