For implement Image click:
- Write a class that extends System.Windows.Control.Image.
- Create a RoutedEvent and RoutedEventHandler to facilitate the mouse
click event.
- Override OnMouseLeftButtonDown
In my example, I evaluate the click count, because have not idea how do this better
public class ImageHelper : Image
{
public static readonly RoutedEvent MouseLeftButtonClick =
EventManager.RegisterRoutedEvent(
"MouseLeftButtonClick",
RoutingStrategy.Bubble,
typeof(RoutedEventHandler),
typeof(ImageHelper));
public event RoutedEventHandler MouseLeftButtonClickEvent
{
add
{
AddHandler(MouseLeftButtonClick, value);
}
remove
{
RemoveHandler(MouseLeftButtonClick, value);
}
}
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
if (e.ClickCount == 1)
{
RaiseEvent(new MouseLeftButtonClickEventArgs(
MouseLeftButtonClick, this));
}
base.OnMouseLeftButtonDown(e);
}
public class MouseLeftButtonClickEventArgs : RoutedEventArgs
{
public MouseLeftButtonClickEventArgs(RoutedEvent routedEvent, object source)
: base(routedEvent, source)
{
// some code.....
}
}
}
XAML:
<local:ImageHelper>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonClickEvent">
<i:InvokeCommandAction Command="{Binding Path=MyCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</local:ImageHelper>