WPF Trigger no establecerá propiedad si se establece en Element

Este comportamiento me parece increíblemente extraño, y supongo que estoy haciendo algo mal para conseguirlo. Tengo un ContentControl que usa un DataTemplete para representar un TabControl. Quiero que se muestre una imagen cuando no hay tabs abiertas, y ocultarlas cuando las haya. Pero aquí está el problema:

            

Esto no funciona … más o menos.

He probado esto en Visiblity y Margin (solo para estar seguro). Este disparador alterará la propiedad, a menos que esa propiedad esté definida en las tags de Image . Si es así, el disparador no actualizará esa propiedad. Entonces, si no defino una visibilidad para la imagen, y el disparador la oculta, funciona. El problema es que el valor predeterminado es Visible y el desencadenador debe mostrarlo cuando value = 0 y ocultarlo de lo contrario.

¿Por qué el disparador no anula las propiedades definidas explícitamente? ¿No es ese su propósito?

Esta es la Precedencia de Valor de Propiedad de Dependencia normal. Al configurarlo en la imagen está en el n. ° 3, mientras que en el disparador de estilo está en una precedencia inferior al n. ° 6.

Usted puede hacer esto en su lugar:

       

Establezca su Visibilidad en el Estilo además de en el Disparador

Me he topado con este extraño comportamiento con DataTriggers muchas veces, donde a veces los Setters de DataTrigger no tendrán efecto a menos que Setter también esté definido en el Estilo.

No funcionará

       

Trabajará

       

Editar: vea la respuesta aceptada para obtener una explicación sobre por qué esto no funciona. Tiene que ver con el orden en que se determinan las propiedades de dependencia, donde las propiedades definidas en siempre tienen prioridad sobre los valores activados.

Cuando un disparador es verdadero, cambia el valor al valor deseado. Cuando ya no es verdadero, devuelve el valor al valor anterior. No lo cambiará a un valor que no será.

Esto significa que si el valor original es visible y lo cambia a visible, cuando el activador ya no esté activo, el valor volverá a ser visible.