2012-04-26 2 views
8

내 요소에 IsMouseOver 트리거가 있습니다. 또한 다른 요소가 마우스를 캡처함으로써 드래그 동작이 발생했기 때문에 IsMouseOver 트리거가 발생하지 않지만 마우스를 끌어 올리면 특정 요소에서 특정 요소가 발생하기를 원합니다. 이것이 가능한가?마우스를 캡처 할 때 IsMouseOver

+0

질문에 대한 답변을 찾으셨습니까? –

답변

0

사용자가 뭔가를 드래그하면 해당 순간에 마우스가 "캡처 됨"되고 마우스 이벤트가 마우스가 지나가는 컨트롤로 보내지지 않습니다. 실제로 "마우스를 캡처 한"컨트롤 만 마우스 이벤트를받습니다. 따라서 이러한 이벤트를 처리해야합니다. 이것은 쉬워야합니다. 문제가 있으면 샘플 코드로 이메일을 보내주십시오. 확인해 드리겠습니다. 최고의 소원.

0

나는 몇 년 전에이 질문을 받았다는 것을 알고 있지만 누군가가 (나처럼) 검색 엔진을 사용하여 여기에 왔을 때, 내가 어떻게이 문제를 해결했는지를 알아 냈습니다.

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. 대신 IsMouseOver 재산을 사용, 마우스가 컨트롤 내에 있는지 확인하려면 코드에서 충돌 테스트를 사용 질문을 읽지 않은 경우이 메서드는 마우스가 "캡처되어"따라서 IsMouseOver 속성이 올바르게 작동하지 않는 상황에 대한 해결 방법입니다. 정상적인 상황에서는 항상 IsMouseOver을 사용해야합니다.

관련 문제