1.st part of the quesion: What is the difference between these 2 event registrations ?
_popUp.AddHandler(PreviewMouseLeftButtonDownEvent, ne
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.
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.