0

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 属性。文本改变了它的颜色,但它不是对比度,类似于水印。

我怎样才能禁用它?并使禁用控制更具对比度?

4

1 回答 1

0

文本改变了它的颜色,但它不是对比度,类似于水印。

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

您所描述的问题是非常熟悉的。恐怕没有什么好方法可以摆脱这种情况,以至于我能给你的最好建议就是不要打扰。如果有的话,它只会让使用主题和样式变得非常痛苦。

但是,有一种简单的方法可以通过将IsEnabled="False"属性替换为IsHitTestVisible="False"and来获得所需的行为。Focusable="False"
这些将使得无法通过键盘导航单击或聚焦控件,基本上使其禁用。现在您可以添加更多样式属性,使其看起来像您认为禁用的控件应该看起来的样子。例如,通过设置所需的前景背景,或者您甚至可以使用更接近 1 的不透明度(例如:0.9),这将使它比原来的暗,但仍然足够暗以正确阅读。

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


编辑1:显然可以通过使用您自己DataTemplate的控件来覆盖不透明度更改。即使在 wpf C# 中禁用控制时如何保持 100% 的不透明度


编辑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>
于 2017-11-09T16:31:31.950 回答