WPF按钮样式 - 禁用状态下更改文字颜色
<Button Style="{StaticResource RoundedButtonStyle}" IsEnabled="False" ToolTip="写EPC" Command="{Binding WriteEpcCmd}">
<Button.Content>
<StackPanel>
<TextBlock Text="" FontSize="22" HorizontalAlignment="Left" Foreground="#0BA29A" VerticalAlignment="Bottom" />
<TextBlock Text="EPC" HorizontalAlignment="Right" FontSize="11" VerticalAlignment="Top" Foreground="#0BA29A" Margin="7,-4,0,0" />
</StackPanel>
</Button.Content>
</Button>
<Style x:Key="RoundedButtonStyle" TargetType="Button">
<Setter Property="Width" Value="35" />
<Setter Property="Height" Value="35" />
<Setter Property="Margin" Value="5,0,5,0" />
<Setter Property="Foreground" Value="#3d80fc" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="RenderTransformOrigin" Value="-1.819,-4.886" />
<Setter Property="IsEnabled" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Ellipse Name="roundButtonBackground" Fill="White" StrokeThickness="0.5">
<Ellipse.Stroke>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="Gray" />
<GradientStop Offset="1" Color="LightGray" />
</LinearGradientBrush>
</Ellipse.Stroke>
</Ellipse>
<Ellipse Margin="15,5,15,50">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="WhiteSmoke" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<ContentPresenter Name="GelButtonContent" HorizontalAlignment="Center" VerticalAlignment="Center" Content="{TemplateBinding Content}" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="roundButtonBackground" Property="Ellipse.Fill">
<Setter.Value>
<RadialGradientBrush>
<GradientStop Offset="0" Color="Navy" />
<GradientStop Offset="1" Color="DeepSkyBlue" />
</RadialGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="roundButtonBackground" Property="Ellipse.Fill">
<Setter.Value>
<RadialGradientBrush>
<GradientStop Offset="0" Color="#ffcc34" />
<GradientStop Offset="1" Color="#cc9900" />
</RadialGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Foreground" Value="#3d80fc" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="Gray" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<h2>如何使用样式表在IsEnabled=false时更改TextBlock文字颜色</h2>
<p>您可以在样式模板中的IsEnabled=false触发器中,通过Setter设置TextBlock的Foreground属性来更改文字颜色。例如:</p>
<pre><code class="language-xml"><Trigger Property="IsEnabled" Value="False">
<Setter TargetName="textBlock1" Property="Foreground" Value="Gray" />
</Trigger>
</code></pre>
<p>其中,textBlock1代表需要更改颜色的TextBlock控件。将上述代码加入样式模板中即可实现IsEnabled=false时更改TextBlock的文字颜色。</p>
原文地址: https://www.cveoy.top/t/topic/nwwj 著作权归作者所有。请勿转载和采集!