Este comportamiento me parece increíblemente extraño, y supongo que estoy haciendo algo mal para obtenerlo. Tengo un ContentControl
que usa un DataTemplete para representar un TabControl. Quiero que se muestre una imagen cuando no hay pestañas abiertas, y ocultarlas cuando las haya. Pero aquí está el problema:WPF Trigger no establecerá propiedad si está configurado en Elemento
<Image Name="image1" Stretch="Uniform" Visibility="Hidden" Source="/Affinity;component/Images/affinity_logo.png">
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
<DataTrigger Binding="{Binding Items.Count, ElementName=tabcontrolworkspaces}"
Value="0">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
Esto no funciona ... más o menos.
He probado esto en Visiblity y Margen (solo para estar seguro). Este disparador alterará la propiedad, a menos que esa propiedad esté definida en las etiquetas 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 activador no anula las propiedades que están explícitamente definidas? ¿No es ese su propósito?
¿Has intentado configurarlo para el otro lado? Como en, cuando Value! = "0" establece la visibilidad a no visible? – mydogisbox
¿Se puede usar incluso! = En un valor de activación? – Tyrsius
No directamente, pero con un poco de esfuerzo se puede hacer. @CodeNaked tiene una mejor solución. Aquí está la solución indeseable. http://blogs.msdn.com/b/mikehillberg/archive/2008/09/30/comparabledatatrigger.aspx – mydogisbox