2012-05-24 13 views
7

Jaki jest najlepszy sposób wyłączenia DropShadowEffect, na przykład, jeśli wiesz, że używasz sesji zdalnej?WPF Jak wyłączyć DropShadowEffect

mogę myśleć o ustalenie koloru przezroczystego, promień rozmycia 0 lub krycie do zera, ale nie wiem, czy jest jakaś różnica w tych wyborach, lub jeśli jest lepszym rozwiązaniem.

Odpowiedz

10

Style triggers + RenderCapability Tiers jest tym, czego potrzebujesz. Istnieją nieco bardziej przyjazne sposoby zwracania możliwości warstwy renderowania, ale istnieje ogólna idea. Podczas korzystania z usług terminalowych lub braku możliwości renderowania dla efektów sprzętowych można usunąć efekt za pomocą wyzwalacza stylu.

<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

Świetny przykład, dzięki. Rozumiem, że możliwości sprzętowe zostaną wykryte podczas sesji GoToMyPC, prawda? – Dean

+0

@Dean Przepraszam, nie mam żadnego osobistego doświadczenia z GoToMyPC i RenderTierCapability, jednak powinno być całkiem łatwe do przetestowania! – erodewald

+0

Chciałem powiedzieć, że nie można go wykryć na GoToMyPC. Ale tak, łatwe do przetestowania. – Dean

1

Zamiast wyłączać DropShadowEffect można ustawić styl, aby nawet nie używać efektu w pierwszej kolejności.

+0

Muszę wyłączyć, gdy uruchomiony tylko w sesji zdalnej. Mamy kilku użytkowników korzystających z Citrix i innych, którzy korzystają z niego bezpośrednio na swoich komputerach. – Dean

+0

Więc możesz mieć 2 oddzielne style. Jeden, który zostanie użyty dla użytkowników komputerów stacjonarnych i taki, który zostanie użyty dla użytkowników Citrix \ RDP. Musisz wtedy albo potrzebować flagi na modelach widoku, użyć motywu lub użyć narzędzia StyleSelectors, aby upewnić się, że wybierasz odpowiedni styl dla kontekstu, w którym aplikacja jest uruchomiona. – Steve

+1

Próba uzyskania prostszego rozwiązania niż restylowanie. Jeśli przezroczysty kolor zasadniczo usuwa cały efekt z dowolnego przetwarzania silnika graficznego, byłoby to w porządku. Czy nie jest mile widziane być miłym?!?! – Dean