2012-05-24 8 views
7

Каков наилучший способ отключить DropShadowEffect, например, если вы знаете, что работаете на удаленном сеансе?WPF Как отключить DropShadowEffect

Я могу думать о настройке цвета на прозрачный, радиус размытия до 0, или непрозрачности до нуля, но не уверен, что если есть какая-то разница в этих вариантах, или если есть лучшее решение.

ответ

10

Style triggers + RenderCapability Tiers - это то, что вам нужно. Есть несколько более дружественных способов вернуть возможности уровня рендеринга, но общая идея есть. При использовании служб терминалов или отсутствия возможности рендеринга для аппаратных эффектов вы можете удалить эффект с помощью триггера стиля.

<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

Отличный пример, спасибо. Я полагаю, что аппаратные возможности будут обнаружены на сеансе GoToMyPC, верно? – Dean

+0

@Dean Извините, у меня нет никакого личного опыта с GoToMyPC и RenderTierCapability, должно быть довольно легко проверить! – erodewald

+0

Я хотел сказать, что не будет обнаружено на GoToMyPC. Но да, легко проверить. – Dean

1

Вместо отключения DropShadowEffect вы можете настроить элемент управления, чтобы даже не использовать эффект в первую очередь.

+0

Мне нужно отключить его при работе только на удаленной сессии. У нас есть некоторые пользователи, которые используют Citrix, и другие, которые используют его прямо на своих ПК. – Dean

+0

Итак, у вас может быть 2 отдельных стиля. Тот, который используется для пользователей настольных компьютеров, и тот, который используется для пользователей Citrix \ RDP. Вам понадобится некоторый флаг на ваших моделях просмотра, используйте theming или используйте StyleSelectors, чтобы убедиться, что вы выбрали правильный стиль для контекста, в котором работает приложение. – Steve

+1

Попытка получить его проще, чем рестайлинг. Если прозрачный цвет в основном удаляет весь эффект от любой обработки графического движка, то это будет хорошо. Не было бы быть красивым?!?! – Dean

Смежные вопросы