首页 文章

WPF - 确定鼠标是否超过UIElement

提问于
浏览
9

我有一些看起来像这样的xaml标记:

<Canvas x:Name="A">
     <Canvas x:Name="B"/>
</Canvas>

我想确定鼠标是否结束 Canvas B.

当我的鼠标在Canvas B上方时单击,Mouse.DirectlyOver返回Canvas A(如我所料) . 然后我从Canvas A获得了对Canvas B的引用,但是当我检查Canvas B的IsMouseOver属性时,它返回false .

给出上面的xaml,确定鼠标是否超过Canvas B的最佳方法是什么?

2 回答

  • 3

    您可以使用IsMouseOver property来确定鼠标是否在给定控件上:

    if(this.B.IsMouseOver)
        DoSomethingNice();
    

    虽然Mouse.DirectlyOver可以工作,但如果鼠标位于 Canvas 包含的控件之上,则将返回该控件而不是 Canvas 本身 . 即使在这种情况下, IsMouseOver 也能正常工作 .

  • 22

    我在这里找到了一个可以帮助你的答案:StackOverflow: WPF Ways to find controls

    仅供参考:

    我只是在寻找一种方法来查明我的鼠标是否完全在我的应用程序窗口上,并且我成功地找到了这个:

    if (Mouse.DirectlyOver != null)
        DoSomethingNice();
    

    在调试Mouse.DirectlyOver时,它似乎应该找到你的Canvas B,因为它寻找最顶层的元素 - 所以你的例子应该可行 . 它没有给我一个依赖对象,但我想你可以将它与你的画布进行比较使用这是代码隐藏(未经测试):

    if (Mouse.DirectlyOver == this.B)
        DoSomethingNice();
    

相关问题