Проверка, есть ли у RoutedEvent какие-либо обработчики

У меня есть пользовательский класс Button, который всегда выполняет одно и то же действие при нажатии (открывая определенное окно). Я добавляю событие Click, которое может быть назначено в XAML кнопки, как обычная кнопка.

Когда его щелкают, я хочу выполнить обработчик события Click, если он был назначен, в противном случае я хочу выполнить действие по умолчанию. Проблема в том, что, очевидно, нет способа проверить, были ли какие-либо обработчики добавлены к событию.

Я думал, что нулевая проверка на событие сделает это:

if (Click == null) 
{ 
    DefaultClickAction(); 
} 
else 
{ 
    RaiseEvent(new RoutedEventArgs(ClickEvent, this));;
}

... но это не компилируется. Компилятор говорит мне, что я не могу сделать ничего, кроме + = или - =, для события за пределами определяющего класса, хотя я пытаюсь сделать эту проверку ВНУТРИ определяющего класса.

Я сам реализовал правильное поведение, но оно уродливо и многословно, и я не могу поверить, что нет встроенного способа сделать это. Я должен что-то упустить.

Вот соответствующий код:

public class MyButtonClass : Control
{
    //...

    public static readonly RoutedEvent ClickEvent =
        EventManager.RegisterRoutedEvent("Click",
                                         RoutingStrategy.Bubble,
                                         typeof(RoutedEventHandler),
                                         typeof(MyButtonClass));

    public event RoutedEventHandler Click
    {
        add { ClickHandlerCount++; AddHandler(ClickEvent, value); }
        remove { ClickHandlerCount--; RemoveHandler(ClickEvent, value); }
    }

    private int ClickHandlerCount = 0;

    private Boolean ClickHandlerExists
    {
        get { return ClickHandlerCount > 0; }
    }

    //...
}

Ответы на вопрос(1)

Ваш ответ на вопрос