首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF,Telerik:禁用时更改控制样式

WPF,Telerik:禁用时更改控制样式
EN

Stack Overflow用户
提问于 2017-10-17 17:00:44
回答 1查看 1.2K关注 0票数 0

我在Telerik控制上有麻烦。

代码语言:javascript
复制
<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" />...

因此,这将处理禁用的属性。文字改变它的颜色,但它不是对比,类似于水印。

我怎么才能让这个失效?让残疾人控制的对比更大?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-09 16:31:31

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

对于以后的引用,这是由Opacity属性引起的。当不透明度低于1时,它就变轻了。

你所描述的问题是非常熟悉的。恐怕没有什么很好的方法来解决这个问题,所以我能给你的最好的建议就是不去麻烦你。如果有的话,它只会使使用主题和风格成为真正的痛苦。

但是,有一种简单的方法可以通过将IsEnabled="False"属性替换为IsHitTestVisible="False"Focusable="False"来获得您想要的行为

这将使其无法通过键盘导航单击或聚焦控件,基本上使其禁用。现在,您可以添加更多的样式属性,以使其看起来像您认为禁用的控件应该看起来那样。例如,设置想要的前景和背景,或者您甚至可以使用接近1(例如: 0.9)的不透明度,这将使它比原来的更暗,但仍然足够黑暗,足以正确阅读。

我希望这能帮助你解决你目前的问题,如果你想让我进一步澄清的话,请留下评论。

编辑1:可以通过为控件使用自己的DataTemplate来覆盖不透明度更改。How to have 100% opacity even when control is disabled in wpf C#

编辑2: --我将给出一个如何正确使用其他属性的示例。

这就是通常定义禁用按钮的方法,这样做会使文本更轻巧,更难读。

代码语言:javascript
复制
<!-- 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来模拟这些结果。

代码语言:javascript
复制
<!-- 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}" />

在上面的例子中,这些按钮看起来仍然是启用的。但是,您将无法聚焦或单击它们。当然,我们确实希望看到一些不同之处,以便能够判断它们不能被使用。

代码语言:javascript
复制
<!-- 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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46795429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档