2012-04-26 14 views
8

Tengo un desencadenador IsMouseOver en mi elemento. También tengo una acción de arrastre, donde otro elemento captura el mouse y, por lo tanto, el desencadenante IsMouseOver nunca ocurre, pero explícitamente quiero que ocurra en ciertos elementos cuando lo arrastro (mouse capturado y todo). es posible?IsMouseOver cuando el mouse se ha capturado

+0

¿Encontró la respuesta a su pregunta? –

Respuesta

0

Cuando el usuario está arrastrando algo, el mouse se "captura" durante ese momento y los eventos del mouse no se envían a los controles sobre los que pasa el mouse. Solo el control que realmente "capturó el mouse" recibe eventos del mouse. Por lo tanto, necesita manejar esos eventos allí. Esto debería ser fácil. Si tiene algún problema, no dude en enviarme un código de muestra y lo verificaré por usted. Los mejores deseos.

0

Sé que esto fue preguntado hace años, pero por si acaso alguien aterriza aquí desde un motor de búsqueda (como yo), aquí es cómo resolví el problema por mí mismo. En lugar de utilizar IsMouseOver propiedad, uso de pruebas de golpe en su código para determinar si el ratón está dentro de su control:

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 
} 

N. B. Si no ha leído la pregunta, tenga en cuenta que este método es una solución para situaciones en las que el mouse está "capturado" y, por lo tanto, la propiedad IsMouseOver no funciona correctamente. En situaciones normales, siempre debe usar IsMouseOver.

Cuestiones relacionadas