2012-05-24 17 views
7

Was ist der beste Weg, um eine DropShadowEffect zu deaktivieren, zum Beispiel, wenn Sie wissen, dass Sie in einer Remote-Sitzung ausgeführt werden?WPF Deaktivieren von DropShadowEffect

I wobei die Farbe transparent, der Unschärferadius auf 0, oder die Deckkraft auf Null denken kann, aber nicht sicher, ob es in diesen Entscheidungen ein Unterschied ist, oder wenn es eine bessere Lösung ist.

Antwort

10

Style triggers + RenderCapability Tiers ist, was Sie brauchen. Es gibt etwas freundlichere Wege, die Render-Tier-Fähigkeiten zurückzugeben, aber die allgemeine Idee ist da. Wenn Sie Terminaldienste verwenden oder keine Renderfunktion für Hardwareeffekte zur Verfügung steht, können Sie den Effekt mit einem Stilauslöser entfernen.

<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

Tolles Beispiel, danke. Ich nehme an, dass Hardware-Fähigkeiten in einer GoToMyPC-Sitzung erkannt werden, oder? – Dean

+0

@Dean Leider habe ich keine persönlichen Erfahrungen mit GoToMyPC und RenderTierCapability, sollte aber recht einfach zu testen sein! – erodewald

+0

Ich wollte sagen, dass es auf GoToMyPC nicht erkannt werden würde. Aber ja, einfach zu testen. – Dean

1

Anstatt den DropShadowEffect zu deaktivieren, können Sie das Steuerelement so steuern, dass es den Effekt überhaupt nicht verwendet.

+0

Ich muss es deaktivieren, wenn nur in einer Remote-Sitzung ausgeführt wird. Wir haben einige Benutzer, die Citrix verwenden, und andere, die es direkt auf ihren PCs verwenden. – Dean

+0

Sie könnten also zwei verschiedene Stile haben. Eine, die für Desktop-Benutzer verwendet wird und eine, die für Citrix \ RDP-Benutzer verwendet wird. Sie müssten dann entweder ein Flag in Ihren Ansichtsmodellen benötigen, Themes verwenden oder StyleSelectors verwenden, um sicherzustellen, dass Sie den richtigen Stil für den Kontext auswählen, in dem die Anwendung ausgeführt wird. – Steve

+1

Der Versuch, es einfacher als die Neugestaltung zu machen. Wenn die transparente Farbe im Grunde genommen den gesamten Effekt einer Grafik-Engine-Verarbeitung entfernt, wäre das in Ordnung. Wäre es nicht möglich, schön zu sein?!?! – Dean

Verwandte Themen