Anulación de WPF IsEnabled de padre

Acabo de buscar una manera de habilitar un control secundario mientras el control primario tieneIsEnabled = false. Todas las respuestas que he encontrado hasta ahora dicen que no es posible: uno tiene que habilitar el padre y deshabilitar los controles secundarios, excepto los que aún deberían estar habilitados.

Sin embargo, al anular los metadatos para IsEnabledProperty en el archivo App.xaml.cs, pude cambiar este comportamiento predeterminado:

protected override void OnStartup(StartupEventArgs e)
{
    UIElement.IsEnabledProperty.OverrideMetadata(typeof(FrameworkElement),
             new UIPropertyMetadata(true,IsEnabledChanged, CoerceIsEnabled));
}

private void IsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    var childrenCount = VisualTreeHelper.GetChildrenCount(d);
    for (int i = 0; i < childrenCount; ++i)
    {
        var child = VisualTreeHelper.GetChild(d, i);
        child.CoerceValue(UIElement.IsEnabledProperty);
    }
}
private object CoerceIsEnabled(DependencyObject d, object basevalue)
{
    var parent = VisualTreeHelper.GetParent(d) as FrameworkElement;
    if (parent != null && parent.IsEnabled == false)
    {
        if (d.ReadLocalValue(UIElement.IsEnabledProperty) == DependencyProperty.UnsetValue)
        {
            return false;
        }
    }
    return basevalue;
}

Ahora puede configurar manualmente elIsEnabled propiedad de un elemento secundario, que anula el valor principal.

¿Hay algún inconveniente de este enfoque?

Respuestas a la pregunta(3)

Su respuesta a la pregunta