通过鼠标悬停更改子元素的颜色

时间:2015-06-27 07:34:12

标签: c# wpf button

我有以下窗口栏,有四个按钮和一个图像(像丝带一样的小像素):

enter image description here

这是代码(XAML),后面的代码(在C#中)并不有趣:

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Focusable="False"
    Click="SaveClicked" Margin="10, 0">
    <StackPanel Orientation="Horizontal" >
        <Image x:Name="ImageSave" Height="20" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="20"
           Source="images/titlebar/SaveIconWhite.png" Margin="0,0,0,5" />
        <Label x:Name="LbSave" Content="Save" VerticalAlignment="Stretch" FontSize="14"
           HorizontalAlignment="Left" Foreground="White" />
    </StackPanel>
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <ContentPresenter Content="{TemplateBinding Content}"/>
        </ControlTemplate>
    </Button.Template>
</Button>

其他按钮的代码几乎相同。

按钮感觉有点不合适,因为它们没有鼠标悬停效果。 当鼠标悬停在按钮上时,我想实现标签的颜色更改。更改文件加载和保存的图像也会很棒,但我想我能够自己做,当我知道如何在标签的颜色变化上实现鼠标时。

在正常情况下,我会尝试使用以下代码来改变鼠标颜色:

<Button.Style>
     <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
       <Style.Triggers>
          <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="DarkGoldenrod"/>
          </Trigger>
       </Style.Triggers>
     </Style>
 </Button.Style>

但这不起作用,因为我已经拥有了Button.Template,而且我对Button.Template一点也很困惑(没有理解它 - 只能复制..)。 Button.Template是如何工作的以及它的用途是什么?

有人能给我一个正确方向的暗示吗?

2 个答案:

答案 0 :(得分:0)

我们有MouseEnterMouseLeave个活动。

当鼠标在控件内时,使用MouseEnter更改颜色。

使用MouseLeave更改鼠标离开控件时的颜色。

答案 1 :(得分:0)

从未使用但将触发器置于按钮的ControlTemplate中: 像这样的东西:

<Button.Template>
        <ControlTemplate TargetType="Button">
            <ContentPresenter Content="{TemplateBinding Content}"/>
        <ControlTemplate.Triggers>
           <Trigger Property="Button.IsMouseOver" Value="True">
             <Setter TargetName="buttonLabel" Property="Foreground" Value="Red"/>
           </Trigger>
         </ControlTemplate.Triggers>
        </ControlTemplate>
    </Button.Template>
</Button>

以及Button.Template是如何工作的以及它的用途是什么? 请访问以下链接 http://www.codeproject.com/Articles/84630/WPF-Customize-your-Application-with-Styles-and-Con

https://msdn.microsoft.com/en-us/library/cc295273.aspx 希望它可以帮助你。