2012-04-26 81 views
8

我的元素上有一个IsMouseOver触发器。我也有一个拖动动作发生,其中另一个元素捕获鼠标,因此IsMouseOver触发器从不发生,但我明确地希望它发生在某些元素,当我拖动它(鼠标捕获和所有)。这可能吗?当鼠标被捕获时IsMouseOver

+0

你有没有找到你的问题的答案? – 2012-07-17 12:42:30

回答

0

当用户拖动某物时,鼠标在该时刻被“捕获”,并且鼠标事件不会发送到鼠标经过的控件。只有实际“捕获鼠标”的控件才会收到鼠标事件。因此,你需要在那里处理那些事件。这应该很容易。 如果您有任何问题随时给我发送一些示例代码,我会为你检查它。最好的祝愿。

0

我知道这是几年前问的,但为防万一有人从搜索引擎登陆(就像我一样),这里是我如何为自己解决问题。而不是使用IsMouseOver财产,使用命中测试你的代码,以确定是否鼠标在你的控制中:

bool IsMouseOverEx = false; 

VisualTreeHelper.HitTest(this, d => 
{ 
    if (d == this) 
    { 
    IsMouseOverEx = true; 
    return HitTestFilterBehavior.Stop; 
    } 
    else 
    return HitTestFilterBehavior.Continue; 
}, 
ht => HitTestResultBehavior.Stop, 
new PointHitTestParameters(Mouse.GetPosition(this))); 

if (IsMouseOverEx) 
{ 
    //Do whatever you need in case of MouseOver 
} 

注:如果您还没有阅读该问题,请注意,此方法适用于鼠标被“捕获”并因此IsMouseOver属性无法正常工作的情况。在正常情况下,您应该始终使用IsMouseOver