Почему вы определяете свое собственное событие MouseDown
, в то время как UserControl
уже имеет нормальное событие MouseDown?
В любом случае, если вы определяете событие для использования RoutedEventHandler
, то неудивительно, что вы 'в конечном итоге застрял с RoutedEventHandler
.Вы объявили это так:
public static readonly RoutedEvent MyButtonDownEvent = EventManager.RegisterRoutedEvent("MyMouseButtonDown", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyUserControl));
Обратите внимание на бит, где написано typeof(RoutedEventHandler)
?
Если я не ошибаюсь, ваш код должен выглядеть следующим образом:
public static readonly RoutedEvent MyButtonDownEvent =
EventManager.RegisterRoutedEvent
("MyButtonDown",
RoutingStrategy.Bubble,
typeof(MouseButtonEventHandler),
typeof(MyUserControl));
public event MouseButtonEventHandler MyButtonDown
{
add { AddHandler(MyButtonDownEvent, value); }
remove { RemoveHandler(MyButtonDownEvent, value); }
}
Пример того, как распространить существующее событие MouseDown на пользовательское событие:
InitializeComponent();
this.MouseDown += (s, e) => {
RaiseEvent(new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, e.ChangedButton)
{
RoutedEvent = MyButtonDownEvent
});
};