UIElement.AddHandler() vs .Event += Definition

后端 未结 2 1875
别跟我提以往
别跟我提以往 2020-12-10 14:00

1.st part of the quesion: What is the difference between these 2 event registrations ?

_popUp.AddHandler(PreviewMouseLeftButtonDownEvent, ne         


        
相关标签:
2条回答
  • 2020-12-10 14:20

    According to Redgate's Reflector, there is no difference. Both methods eventually call the internal method EventHandlerStore.AddRoutedEventHandler. This is the reflector output of the add accessor for the PreviewMouseLeftButtonDown event (in the class UIElement):

    public void add_PreviewMouseLeftButtonDown(MouseButtonEventHandler value)
    {
        this.AddHandler(PreviewMouseLeftButtonDownEvent, value, false);
    }
    

    As you can see it calls UIElement.AddHandler for you.

    Before you edited your question you were asking about the Opened event of the popup. In that case, there is a difference: First, the Opened event is not implemented as a routed event but as a simple event, so you can't even use the AddHandler call on it. Secondly, the reflector shows that a different method is called in the EventHandlerStore which adds the handler to a simple delegate collection.

    0 讨论(0)
  • 2020-12-10 14:29

    The important thing might be the AddHandler(xxx,xxx, false).

    If you use true then you can catch events that have already been handled, which can be useful if you subclass Controls like TextBox.

    0 讨论(0)
提交回复
热议问题