Verificando se um RoutedEvent tem algum manipulador

Eu tenho uma classe Button personalizada, que sempre executa a mesma ação quando é clicada (abrindo uma janela específica). Estou adicionando um evento Click que pode ser atribuído no XAML do botão, como um botão normal.

Quando ele é clicado, desejo executar o manipulador de eventos Click, se um tiver sido atribuído, caso contrário, desejo executar a ação padrão. O problema é que aparentemente não há como verificar se algum manipulador foi adicionado a um evento.

Eu pensei que uma verificação nula no evento faria isso:

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

... mas isso não compila. O compilador me diz que não posso fazer nada além de + = ou - = em um evento fora da classe de definição, evento que estou tentando fazer isso, verifique DENTRO da classe de definição.

Eu mesmo implementei o comportamento correto, mas é feio e detalhado e não acredito que não haja uma maneira integrada de fazer isso. Eu devo estar esquecendo alguma coisa.

Aqui está o código relevante:

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; }
    }

    //...
}

questionAnswers(1)

yourAnswerToTheQuestion