WPF, Telerik: изменение стиля управления при отключении
У меня проблемы с управлением Telerik.
<Style x:Key="RadDropDownButtonStyle" TargetType="telerik:RadDropDownButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="telerik:RadDropDownButton">
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="Red" />...
Итак, это обрабатывает свойство Disabled. Текст меняет свой цвет, но он не контрастный, что-то вроде водяного знака.
Как я могу отключить это? И сделать отключенный контроль более контрастным?
1 ответ
Текст меняет свой цвет, но он не контрастный, что-то вроде водяного знака.
Для будущих ссылок это вызвано Opacity
имущество. Когда непрозрачность меньше 1, она становится светлее.
Проблема, которую вы описываете, очень знакома. И я боюсь, что нет никакого отличного способа избавиться от этого, настолько, что лучший совет, который я могу дать, - это даже не беспокоиться. Во всяком случае, это просто сделает использование тем и стилей настоящей болью.
Однако есть простой способ получить желаемое поведение, заменив IsEnabled="False"
собственность с IsHitTestVisible="False"
а также Focusable="False"
Это сделает невозможным щелчок или фокусировку элемента управления с помощью клавиатуры, что делает его отключенным. Теперь вы можете добавить еще несколько свойств стиля, чтобы они выглядели так, как вы считаете, должен выглядеть отключенный элемент управления. Например, установив требуемый передний план и фон или вы можете даже использовать непрозрачность ближе к 1 (например, 0,9), что сделает его менее темным, чем оригинал, но все еще достаточно темным для правильного чтения.
Я надеюсь, что это поможет вам с вашей текущей проблемой, просто оставьте комментарий, если вы хотите, чтобы я прояснил дальше.
РЕДАКТИРОВАТЬ 1: Apperently может перезаписать изменение непрозрачности, используя свой собственный DataTemplate
для контроля. Как сделать 100% непрозрачным, даже если контроль отключен в wpf C#
РЕДАКТИРОВАТЬ 2: Я дам вам пример того, как правильно использовать другие свойства.
Вот как вы обычно определяете отключенную кнопку, и это делает текст более светлым и менее читаемым.
<!-- Simple disabled button -->
<telerik:RadButton Content="Test Button 1" IsEnabled="False" />
<!-- Button with binding on IsEnabled -->
<telerik:RadButton Content="Test Button 2" IsEnabled="{Binding MyBinding}" />
Теперь я покажу вам, как вы можете имитировать эти результаты, используя свойства IsHitTestVisible
а также Focusable
,
<!-- Simple disabled button -->
<telerik:RadButton Content="Test Button 1" IsHitTestVisible="False" Focusable="False" />
<!-- Button with binding on IsEnabled -->
<telerik:RadButton Content="Test Button 2" IsHitTestVisible="{Binding MyBinding}" Focusable="{Binding MyBinding}" />
В приведенных выше примерах кнопки будут выглядеть так, как будто они все еще включены. Однако вы не сможете сфокусироваться или нажать на них. Конечно, мы хотим увидеть разницу, чтобы сказать, что их нельзя использовать.
<!-- Styled disabled button -->
<telerik:RadButton Content="Test Button 1" IsHitTestVisible="False" Focusable="False" >
<telerik:RadButton.Style>
<Style TargetType="telerik:RadButton">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsHitTestVisible}" Value="False">
<Setter Property="Opacity" Value="0.8"/>
</DataTrigger>
</Style.Triggers>
</Style>
</telerik:RadButton.Style>
</telerik:RadButton>