Comprobando si un RoutedEvent tiene controladores

Tengo una clase de botón personalizada, que siempre realiza la misma acción cuando se hace clic (abriendo una ventana específica). Estoy agregando un evento Click que se puede asignar en el XAML del botón, como un botón normal.

Cuando se hace clic, quiero ejecutar el controlador de eventos Click si se ha asignado uno; de lo contrario, quiero ejecutar la acción predeterminada. El problema es que aparentemente no hay forma de verificar si se han agregado controladores a un evento.

Pensé que una comprobación nula del evento lo haría:

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

... pero eso no se compila. El compilador me dice que no puedo hacer nada más que + = o - = a un evento fuera de la clase definitoria, aunque estoy tratando de hacer esta comprobación DENTRO de la clase definitoria.

Yo mismo he implementado el comportamiento correcto, pero es feo y detallado y no puedo creer que no haya una forma integrada de hacerlo. Debo estar perdiendo algo.

Aquí está el 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; }
    }

    //...
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta