How to create a WPF style so that all image controls have a MouseDown (click) event on it?

Since the Image control does not have a Click event, I mimic it using the MouseDown event, and it works just like a click.

Here is my style:

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

Where / how can I create a click event, so I don’t need to do this for EVERY SINGLE PICTURE in my form:

+3
source share
2 answers

You can use EventSetter:

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

And in encoding:

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

You can use EventSetter, as Thomas describes, or just catch the tunneling event PreviewMouseLeftButtonDownat the window level and check if the image has been clicked.

PreviewMouseLeftButtonDown, - , Window:

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

Source: https://habr.com/ru/post/1728245/


All Articles