UIElement 클래스는 RoutedEvent
구성원 MouseLeftButtonDownEvent
및 MouseLeftButtonUpEvent
- 정적을 정의하지만 MouseMoveEvent
은 없습니다. 제가 알 수있는 한, 프레임 워크 계층에서 어떤 클래스도 않습니다.MouseMoveEvent가없는 이유 - 또는 마우스 이동 이벤트에 AddHandler를 사용하는 방법
public event MouseEventHandler MouseMove;
그래서 당신이 쓸 수 있습니다 :이 정규 이벤트 정의입니다
void AttachHandler(UIElement element)
{
element.MouseMove += OnMouseMove;
}
하지만 당신은 당신도 처리 이벤트를 구독 할 수있는 다른 형태의, 사용할 수 없습니다
void AttachHandler(UIElement element)
{
element.AddHandler(UIElement.MouseMoveEvent, new MouseEventHandler(OnMouseMove), true);
}
을
그래서 제 질문은 두 가지이다 :
- 어디에도 정의 된
MouseMoveEvent
이없는 이유는 무엇입니까? - MouseMove 이벤트를 처리 할 때 알림을받을 수있는 해결 방법이 있습니까?
이 기술의 한계는 AddHandler에 API는 문제의 라우트 된 이벤트를 식별 형 RoutedEvent의 매개 변수를 사용한다는 것입니다 :
편집은
나는 the MSDN docs acknowledge this as a limitation 것을 알 수있다. 모든 Silverlight 라우팅 이벤트가 RoutedEvent 식별자를 제공하는 것은 아니므로이 고려 사항은 라우팅 된 이벤트가 처리 된 경우에도 처리 될 수있는 영향을 미칩니다.
편집 # 2
당 @HansPassant는 일반적인 대답은 "처리"로 "MouseMove 이벤트"이벤트는, 따라서 그들은 항상 거품을 표시 할 수 없다는 것입니다. TextBox의 텍스트 영역을 클릭하면 끌어서 놓기 동작을 활성화하면 "MouseMove"이벤트가 더 이상 트리거되지 않습니다. 왜 그렇게 될지 모르겠다.
주 - 나는 사용자가/끌어 텍스트 상자를 드롭 할 수있는 행동을 쓰기 위해 노력하고 있어요 - 사람이 궁금합니다. TextBox 컨트롤은 텍스트 선택을 허용하기 위해 기본적으로 마우스 이벤트를 가로 챕니다.
'UIElement.PreviewMouseMoveEvent'를 사용할 수 있습니다. –
@HamletHakobyan 잘, 실버 라이트에도 존재하지 않습니다. Silverlight에는없는 기능 중 하나 일뿐입니다. 나는 여전히 최선의 해결 방법이 무엇인지 알고 싶다. – McGarnagle
예, 태그가 누락되었습니다. –