繁体   English   中英

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

[英]How do I execute a method on button mouse-over?

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

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

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

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

编辑
将其添加到按钮。

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

导入Blend.Interctivity nuget。

感谢您的帮助,但我设法通过创建一个只有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">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM