【问题标题】:Handling MouseLeftButtonUp over different UIElements in Win Phone 8在 Win Phone 8 中处理不同 UIElements 上的 MouseLeftButtonUp
【发布时间】:2013-10-03 20:14:47
【问题描述】:

当我在一个UIElement(即Rectangle)上按下鼠标左键然后将鼠标移动到另一个Rectangle 并释放鼠标左键时,我遇到了MouseLeftButtonUp 无法触发的问题。

根据此页面http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseleftbuttonup.aspx,这是因为该事件仅在按下鼠标左键的同一元素上触发,

在鼠标指针悬停在此元素上时释放鼠标左键时发生。

如何解决这个问题?

我尝试在两个 Rectangle 下添加一个 Grid 元素来处理 MouseLeftButtonUp 事件,但这似乎并没有解决问题。当从 Rect 移动到 Rect 时它不会触发,但是当从 Rect 移动到 Grid 时它会触发。从 Grid 移动到 Rect 时,它也不会触发。不同的冒泡策略?

这是我正在使用的。检查每个 Rectangle 为 YELLOW 的第二列。通过按下顶部矩形并向下拖动到底部矩形,它们已被“突出显示”。一旦到达底部矩形,我希望能够(以任何方式)发生鼠标按钮向上事件以执行某些操作.. 不起作用!

如果这对于这种“突出显示”机制或在这种情况下完全滥用 Rectangle 似乎是一个奇怪的解决方案,请不要害羞,我是 WP8 的新手。

【问题讨论】:

    标签: c# silverlight windows-phone-7 windows-phone-8 uielement


    【解决方案1】:

    考虑在所有矩形上添加一个Grid ,这样你会得到MouseButtonUp(只要在网格上释放鼠标),但你必须计算哪个矩形已根据MouseEventArgs.GetPosition 移动。

    您可能还想查看UIElement.CaptureMouse().ReleaseMouseCapture()。捕获鼠标意味着即使鼠标离开MouseButtonDown-RectangleMouseButtonUp 也会被触发,但 MouseMoveMouseButtonUp 将针对捕获矩形引发(所以你仍然需要计算要突出显示的矩形),直到它调用ReleaseMouseCapture()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多