我已经习惯在我的标签中将鼠标悬停在文字颜色上。但默认文本颜色为黑色。如何修改下面的默认颜色是其他东西,例如白色。
<Page.Resources>
<SolidColorBrush x:Key="mouseOverColor" Color="Gold" />
<Style x:Key="mouseOverStyle" TargetType="Label">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="{StaticResource mouseOverColor}" />
</Trigger>
</ControlTemplate.Triggers>
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
答案 0 :(得分:5)
您根本不需要覆盖模板。这可以通过以下样式实现:
<SolidColorBrush x:Key="mouseOverColor" Color="Gold" />
<Style TargetType="Label" x:Key="mouseOverStyle">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="{StaticResource mouseOverColor}"/>
</Trigger>
</Style.Triggers>
</Style>
如果您在标签上指定默认值Foreground
,则触发器将无效。
不适用于此标签:
<Label Content="sjdfjfddjfjdfs"
Style="{StaticResource mouseOverStyle}" Foreground="Green"/>
但是,适用于此标签:
<Label Content="sjdfjfddjfjdfs" Style="{StaticResource mouseOverStyle}"/>
即使您的样式仍然有效,但请确保您没有为Foreground DP设置本地值。这是因为Dependency Property Precedence order其中本地值的优先级高于样式的setter值。< / p>
答案 1 :(得分:1)
您是否尝试更改Value
中Foreground
媒体资源的Setter
?
e.g。
<Setter Property="Foreground" Value="White" />
或定义所需颜色的Brush
并使用它? e.g。
<SolidColorBrush x:Key="myColor" Color="White" />
<!-- Your Existing Code -->
<Setter Property="Foreground" Value="{StaticResource myColor}" />
<!-- Your Existing Code -->
如果您只是在标签颜色变化之后(而不是使用ControlTemplate
做任何事情),Rohit的答案会更简单/更明智。