UIElement.OnPreviewMouseDown(MouseButtonEventArgs) 메서드

정의

처리되지 않은 PreviewMouseDown 연결된 라우트된 이벤트가 해당 경로에서 이 클래스로부터 파생된 요소에 도달할 경우 호출됩니다.Invoked when an unhandled PreviewMouseDown attached routed event reaches an element in its route that is derived from this class. 이 이벤트에 대한 클래스 처리를 추가하려면 이 메서드를 구현합니다.Implement this method to add class handling for this event.

protected:
 virtual void OnPreviewMouseDown(System::Windows::Input::MouseButtonEventArgs ^ e);
protected virtual void OnPreviewMouseDown (System.Windows.Input.MouseButtonEventArgs e);
abstract member OnPreviewMouseDown : System.Windows.Input.MouseButtonEventArgs -> unit
override this.OnPreviewMouseDown : System.Windows.Input.MouseButtonEventArgs -> unit
Protected Overridable Sub OnPreviewMouseDown (e As MouseButtonEventArgs)

매개 변수

e
MouseButtonEventArgs

이벤트 데이터를 포함하는 MouseButtonEventArgs입니다.The MouseButtonEventArgs that contains the event data. 이벤트 데이터는 하나 이상의 마우스 단추를 놓았음을 보고합니다.The event data reports that one or more mouse buttons were pressed.

설명

또한 마우스 단추 동작은 전용 입력 관리자에서 처리 됩니다.Mouse button actions are also handled by a dedicated input manager. 입력 및 명령 바인딩과 같은 마우스 단추 작업을 사용 하는 다른 프로그래밍 기능은 작업에 대 한 처리기를 일반적인 마우스 단추 작업으로 노출 하기 전에 호출할 수 있습니다.Other programming features that rely on mouse button actions, such as input and command bindings, might invoke handlers for the action before it is exposed as a general mouse button action. 이러한 입력 시스템 기능이 Mouse.PreviewMouseDown 이벤트를 처리 된 것으로 표시 하면 OnPreviewMouseDown가 호출 되지 않습니다.If these input system features mark the Mouse.PreviewMouseDown event as handled, OnPreviewMouseDown is not invoked.

이 클래스 처리기를 사용 하 여 이벤트를 처리 된 것으로 표시 하면 PreviewMouseLeftButtonDownPreviewMouseRightButtonDown이벤트에 영향을 줄 수 있습니다.If you use this class handler to mark the event as handled, you potentially impact the following events: PreviewMouseLeftButtonDown and PreviewMouseRightButtonDown. Mouse.PreviewMouseDown 수신 되 면 수신 요소에서 이러한 이벤트 중 하나가 발생할 수 있습니다.Either of these events may be raised on the receiving element when Mouse.PreviewMouseDown is received.

클래스 처리에서이 이벤트를 처리 된 것으로 표시 하면 subevents 계속 발생 합니다. 하지만 이벤트 데이터에서 처리 됨 상태를 전달 합니다.If you mark this event as handled in class handling, subevents are still raised; however, they pass the handled state in the event data. 이벤트가 클래스 처리에서 처리 되는 경우 처리기를 연결 하기 위해 handledEventsToo true에서 AddHandler(RoutedEvent, Delegate, Boolean)를 명시적으로 사용 하지 않으면 subevents 인스턴스 처리기가 호출 되지 않습니다.If the event is handled in class handling, instance handlers for the subevents are not invoked unless you explicitly use AddHandler(RoutedEvent, Delegate, Boolean) with handledEventsToo true in order to attach handlers. 클래스 처리기는 handledEventsToo true를 사용 하 여 RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) 서명에 등록 되지 않은 경우에도 호출 되지 않습니다.Class handlers also are not invoked unless those class handlers were registered with the RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) signature with handledEventsToo true. OnPreviewMouseDown를 처리 하 여 클래스 처리가 가능한 모든 마우스 단추 다운 작업에 대해 암시 됩니다.By handling OnPreviewMouseDown, you are implying that your class handling accounted for all possible mouse button down actions. 이 동작은 원치 않을 수 있습니다. 따라서이 가상 메서드를 사용 하 여 이벤트를 처리 된 것으로 표시할 때는 주의 해야 합니다.This behavior might be unwanted; Therefore, use caution when you use this virtual method to mark events as handled.

각 단추 관련 직접 이벤트에는 virtual On * 메서드도 있습니다. 이러한 단추의 특정 클래스 처리기를 재정의 하는 것이 더 적합할 수 있습니다.Each of the button-specific direct events also has a virtual On* method; consider whether overriding these button-specific class handlers might be more appropriate.

이 메서드는 기본 구현이 없습니다.This method has no default implementation. 상속의 중간 클래스가이 메서드를 구현할 수 있으므로 구현에서 기본 구현을 호출 하는 것이 좋습니다.Because an intermediate class in the inheritance might implement this method, we recommend that you call the base implementation in your implementation.

이 메서드의 목적은 * 메서드에서 CLR(공용 언어 런타임)common language runtime (CLR) 이벤트 패턴과 유사 합니다 .이 메서드는 인스턴스 처리기 대신 클래스 처리기를 설정 하 여 파생 클래스에서 일치 하는 이벤트를 처리 하는 방법을 제공 합니다.The purpose of this method is similar to the CLR(공용 언어 런타임)common language runtime (CLR) event pattern On* methods: this method provides the means to handle the matching event from derived classes by establishing a class handler instead of an instance handler. 이 경우 일치 하는 이벤트는 라우트된 이벤트입니다.In this case the matching event is a routed event. 라우트된 이벤트는 처리기를 호출 하는 요소가 아닐 수 있는 자식 요소에 의해 발생할 수 있으므로 On * 메서드의 구현 패턴은 라우트된 이벤트에 대해 다릅니다.The implementation pattern of the On* methods is different for routed events because a routed event can be raised by a child element, which is not necessarily the element that will invoke handlers. 따라서 구현은 이벤트 데이터의 원본 속성을 검사 해야 합니다.Therefore, your implementation needs to examine the source properties of the event data. 대부분의 경우 이벤트를 reraise 시도 해서는 안 됩니다.It should not try to reraise the event in most cases.

이 메서드를 재정의 하거나 클래스 처리기를 RegisterClassHandler로 등록 하 여 이벤트 경로를 따라 이벤트를 받을 때 UIElement의 파생 클래스에서 전용 클래스 처리기 메서드를 호출할 수 있습니다.Either by overriding this method or by registering class handlers with RegisterClassHandler, derived classes of UIElement can call private class handler methods when the event is received along the event route. 클래스 처리가 적절 한 한 가지 시나리오는 이벤트 데이터를 조작 하 고 라우트된 이벤트를 처리 된 것으로 표시 하는 것입니다.One scenario where class handling is appropriate is to manipulate the event data and mark the routed event as handled. 특히 미리 보기 이벤트에 대 한 다른 시나리오는 일치 하는 버블링 클래스 처리기가 호출 되지 않도록 해당 이벤트를 처리 된 것으로 표시 하는 것입니다.Another scenario that is specifically for Preview events is to mark them handled so that the matching bubbling class handlers are not invoked.

적용 대상

추가 정보