繁体   English   中英

如何创建WPF样式,以便所有Image控件都有一个MouseDown(单击)事件?

[英]How can I create a WPF style so all Image controls have a MouseDown(click) event on it?

由于Image控件没有Click事件,我使用MouseDown事件模拟它,它的工作方式与Click相似。

这是我的风格:

 <Window.Resources>
    <Style x:Key="imageStyle" TargetType="{x:Type Image}">
        <Setter Property="RenderTransform">
            <Setter.Value>
                <ScaleTransform />
            </Setter.Value>
        </Setter>
        <Setter Property="RenderTransformOrigin" Value="0.5, 0.5" />
        <Style.Triggers>
            <EventTrigger RoutedEvent="Image.MouseEnter">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Duration="0:0:0.5" From="1" To="1.2" AutoReverse="True"
                                 Storyboard.TargetProperty="RenderTransform.ScaleX"/>
                        <DoubleAnimation Duration="0:0:0.2" From="1" To="1.2" AutoReverse="True" 
                                 Storyboard.TargetProperty="RenderTransform.ScaleY"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

我在哪里/如何创建点击事件,所以我不必对我的表单上的每个单一图像执行此操作:

您可以使用EventSetter

<EventSetter Event="MouseClick" Handler="image_Click"/>

在代码隐藏中:

private void image_Click(object sender, MouseButtonEventArgs e)
{
    Image image = sender as Image;
    if (image != null)
    {
        // do something with the image
    }
}

您可以使用Thomas描述的EventSetter ,或者您可以在Window级别捕获隧道PreviewMouseLeftButtonDown事件并检查是否单击了Image。

要使用PreviewMouseLeftButtonDown为应用程序中的所有图像执行某些操作,只需将其添加到顶级Window

protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
{
  if(e.Source is Image)
  {
    // ... whatever you want to do when an image is clicked ...
  }
}

暂无
暂无

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

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