如何禁用TextBlock?

时间:2011-05-02 02:16:30

标签: c# .net wpf xaml

我希望我的TextBlock看起来已禁用(灰显)但是当我将IsEnabled属性设置为false时,没有任何反应,它会保持黑色:

<TextBlock Text="test" IsEnabled="False" />

为什么?

此外,我尝试使用Label,但由于某些原因,它的尺寸更大,所以它会弄乱我的所有布局。

3 个答案:

答案 0 :(得分:48)

这是使用TextBlock来实现它的正确方法我认为:

<TextBlock Text="Lorem ipsum dolor sit">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Foreground"
                            Value="{StaticResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

答案 1 :(得分:6)

我玩了一点,发现半透明度与IsEnabled =“False”的结果相同。

<TextBlock Text="test" Opacity="0.5" />

优点:它适合每种前景颜色。

答案 2 :(得分:2)

您可以使用背景并应用SystemColor 这是一个让你入门的例子。

<TextBlock IsEnabled="True" 
        Background="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}" 
        Name="textBlock" 
        Text="TEST TextBlock" 
        Height="30" />

您的另一个选择是尝试TextBox的IsReadOnly属性。