2012-05-24 13 views
7

¿Cuál es la mejor manera de desactivar un efecto DropShadow, por ejemplo, si sabe que se está ejecutando en una sesión remota?WPF Cómo deshabilitar DropShadowEffect

puedo pensar en establecer el color de la radio de desenfoque transparente a 0, o la opacidad a cero, pero no estoy seguro si hay alguna diferencia en estas elecciones, o si hay una solución mejor.

Respuesta

10

Style triggers + RenderCapability Tiers es lo que necesita. Hay maneras ligeramente más amigables de devolver las capacidades del nivel de renderizado, pero la idea general está ahí. Al utilizar servicios de terminal, o no hay capacidad de renderizado para efectos de hardware, puede eliminar el efecto con un activador de estilo.

<Style> 
    <Style.Triggers> 
    <Trigger Property="Perf:RenderCapabilityWrapper.Tier" Value="0"> 
     <Setter Property="Effect" Value="{x:Null}"/> 
    </Trigger> 
    <Trigger Property="Perf:RenderCapabilityWrapper.Tier" Value="1"> 
     <Setter Property="Effect" Value="{StaticResource performanceShadow}"/> 
    </Trigger> 
    <Trigger Property="Perf:RenderCapabilityWrapper.Tier" Value="2"> 
     <Setter Property="Effect" Value="{StaticResource qualityShadow}"/> 
    </Trigger> 
    </Style.Triggers> 
</Style> 
+0

Gran ejemplo, gracias. Considero que las capacidades de hardware se detectarían en una sesión de GoToMyPC, ¿verdad? – Dean

+0

@Dean Lo sentimos, pero no tengo ninguna experiencia personal con GoToMyPC y RenderTierCapability, aunque debería ser bastante fácil de probar. – erodewald

+0

Quise decir _no_ se detectaría en GoToMyPC. Pero sí, fácil de probar. – Dean

1

En lugar de deshabilitar DropShadowEffect, podría diseñar el control para que ni siquiera use el efecto en primer lugar.

+0

Necesito deshabilitarlo cuando se ejecuta en una sesión remota solamente. Tenemos algunos usuarios que usan Citrix y otros que lo usan directamente en sus PC. – Dean

+0

Entonces podría tener 2 estilos separados. Uno que se usa para usuarios de escritorio, y otro que se usa para usuarios de Citrix \ RDP. Debería entonces necesitar algún indicador en sus modelos de visualización, usarlos o usar StyleSelectors para asegurarse de seleccionar el estilo correcto para el contexto en el que se ejecuta la aplicación. – Steve

+1

Intentando que sea más simple que el restyling. Si el color transparente básicamente elimina el efecto completo de cualquier procesamiento de motor de gráficos, entonces estaría bien. ¿No sería IsEnabled agradable?!?! – Dean

Cuestiones relacionadas