2017-10-17 130 views
0

Telerik控件有问题。WPF,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属性。文字改变颜色,但不是对比度,就像水印一样。

如何禁用此功能?并使禁用控制更加对比?

回答

0

文本改变其颜色,但它不是对比度,像水印。

对于将来的参考,这是由Opacity属性引起的。当不透明度低于1时,它变得更轻。

你所描述的问题是非常熟悉的。我恐怕没有什么好办法摆脱这一点,所以我可以给你的最好建议是不要打扰。如果有的话,它只会使主题和风格真正的痛苦。

然而,有一个简单的方法用IsHitTestVisible="False"Focusable="False"
更换IsEnabled="False"财产这将使其无法点击或通过键盘导航控制,基本上使其残疾人得到你想要的行为。现在,您可以添加更多样式属性,使其看起来像您认为禁用的控件应该看起来像。通过例如设置想要的前景背景或者你甚至可以使用不透明度更接近1(例如:0.9),这将使其比原来更暗但仍然黑暗,足以正确读取。

我希望这可以帮助您解决目前的问题,如果您希望我进一步澄清,请发表评论。


编辑1: Apperently可以使用自己DataTemplate的控制覆盖透明度的变化。 How to have 100% opacity even when control is disabled in 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}" /> 

我会告诉你如何通过使用属性IsHitTestVisibleFocusable模仿这些结果。

<!-- 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> 
+0

谢谢你的回答。 更改不透明度属性的值没有帮助。 你有任何变种? – Sosedid

+0

这不是我说的。当控制被禁用时,“不透明度”会自动改变。阻止它发生几乎是不可能的。你有没有试过使用'IsHitTestVisible'和'Focusable'? – Oceans

+0

我试过了: ' <触发属性= “调焦” 值= “假”> ' – Sosedid