更改默认悬停在文本颜色wpf上

时间:2013-12-15 12:06:57

标签: c# wpf xaml

我已经习惯在我的标签中将鼠标悬停在文字颜色上。但默认文本颜色为黑色。如何修改下面的默认颜色是其他东西,例如白色。

    <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>

2 个答案:

答案 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)

您是否尝试更改ValueForeground媒体资源的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的答案会更简单/更明智。