WPF文本块灰掉文本

6

我想在WPF文本块中将文字变灰,怎么做?

祝好, Raju


这个问题询问的是“文本块”,但被接受的答案是针对“文本框”的。我想编辑答案,但搜索“文本块”带我来到了这里,而其他答案才是我在寻找的... - Jonathan Johansen
7个回答

8

关于C#:

textBox.Foreground = Brushes.Gray;

关于XAML:

<TextBox Foreground="Gray" />

禁用它(也会更改背景):

textBox.IsEnabled = false;

8

TextBlockIsEnabled标志不会使文本变灰。此帖子详细介绍了TextBlock和标签之间的区别。它还展示了如何在IsEnabled上添加触发器以使文本变灰的XAML代码。


7

当禁用时,文本块不会自动变灰。

您可以使用样式来实现此功能。

    <Style x:Key="DisableEnableTextBlock" TargetType="{x:Type TextBlock}">
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="True">
            <Setter Property="Opacity" Value="1" />
        </Trigger>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Opacity" Value=".5" />
        </Trigger>
    </Style.Triggers>
</Style>

6

您可以将TextBlock.Foreground属性设置为任何颜色(技术上,任何刷子)。如果您希望它变成灰色,请设置:

<TextBlock Text="Foo" Foreground="Gray" />

如果您希望它看起来“禁用”,可以将IsEnabled设置为false:

<TextBlock Text="Foo" IsEnabled="false" />

2
我想使用IsEnabled标志。一旦我将其设置为false,它就没有任何效果。可能是什么问题? - user209293
3
文本块的IsEnabled标志不会使文本变灰。 - Natxo
如果“灰色”不是该系统上的禁用文本颜色,那怎么办?难道你不应该使用引用系统颜色的静态资源刷子吗? - BrainSlugs83
@BrainSlugs83 这取决于 OP 想要什么 - "greyad out" 暗示灰色 - 如果他们希望它看起来被禁用,那么一定要使用系统颜色画刷。 - Reed Copsey
1
没错,但如果这是用户桌面主题的错误灰色怎么办?-- 如果你的表单上一半控件被禁用到正确的灰度,而另一半则被禁用到与开发者颜色方案匹配的任意灰度,那就很奇怪了。-- 当你试图匹配它们时,你应该真正参考系统颜色(这显然是本意)。 - BrainSlugs83
显示剩余4条评论

1
使用TextBox的问题是它周围有一个框。如果您使用Label(带有Content =“Foo”),则可以使用IsEnabled切换文本颜色。否则,它会像TextBlock一样用于短标题/标签。

0

对于 WinUI,请将 Opacity 属性设置为大约 0.5。


-3
使用TextBox代替,并设置IsReadOnly = trueIsEnabled = false

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接