如何在按钮鼠标悬停上执行方法?

时间:2017-06-27 17:16:04

标签: c# wpf xaml

我目前已经设置了按钮设置以在鼠标悬停时更改图像,但是现在我想知道是否可以在鼠标悬停时执行方法。当鼠标悬停在按钮上但没有运气时,我一直在尝试执行一个简单的方法来显示一个消息框。

这是我目前的按钮样式和工具提示的代码:

<Style x:Key="btnHoliday" TargetType="{x:Type Button}">
    <Setter Property="IsEnabled" Value="True" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <Image x:Name="PART_img" Source="C:\Users\Development\Documents\Visual Studio 2013\Projects\Program\Resources\Icons\Holiday.png" />
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="PART_img"
                    Property="Source"
                    Value="C:\Users\Development\Documents\Visual Studio 2013\Projects\Program\Resources\Icons\HolidayAlt.png" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

和工具提示的代码

<Button x:Name="btnHoliday" Style="{StaticResource btnHoliday}" 
HorizontalAlignment="Left" Margin="657,19,0,0" VerticalAlignment="Top" Width="64" Height="64" ToolTipService.ShowDuration="12000">
    <Button.ToolTip>
        <StackPanel>
            <TextBlock FontWeight="Bold" FontSize="12" Margin="0,0,0,5">Launch Holidays</TextBlock>
            <TextBlock>
                Allows you to Book/View Holidays, Check
                <LineBreak />
                 the status of pending Bookings and view
                <LineBreak />
                Holidays Remaining.
            </TextBlock>
            <Border BorderBrush="Silver" BorderThickness="0,1,0,0" Margin="0,8" />
            <WrapPanel>
                <TextBlock FontStyle="Italic">Click to launch.</TextBlock>
            </WrapPanel>
        </StackPanel>
    </Button.ToolTip>
</Button>

2 个答案:

答案 0 :(得分:0)

在开始实现任何花哨之前,尝试使用MouseEnter / MouseLeave事件,看看是否足够。

修改
将其添加到按钮。

 <i:Interaction.Triggers>
      <i:EventTrigger EventName="MouseEnter">
         <in:CallMethodAction MethodName="Foo" TargetObject="{Binding}" />
      </i:EventTrigger>
  </i:Interaction.Triggers>

导入Blend.Interctivity nuget。

答案 1 :(得分:0)

感谢您的帮助,但我设法通过创建一个只使用Messagebox的方法来确保它正在运行来解决这个问题。

private void btnHoliday_MouseEnter(object sender, MouseEventArgs e)
    {
        MessageBox.Show("working");
    }

然后将所需事件分配给刚使用特定按钮上的XAML代码中的MouseEnter =“btnHoliday_MouseEnter”创建的方法。

<Button x:Name="btnHoliday" MouseEnter="btnHoliday_MouseEnter" Style="{StaticResource btnHoliday}" HorizontalAlignment="Left" Margin="657,19,0,0" VerticalAlignment="Top" Width="64" Height="64" ToolTipService.ShowDuration="12000">