I want to make a user control that shows an image and can invoke a command when clicked. Later I want to bind a list of these controls to a list of products.
Creating a clickable image in WPF
Asked Answered
Try this very straight forward approach
<Grid>
<Button Height="50" Width="50">
<Button.Template>
<ControlTemplate>
<Image Source="yourimage.png"/>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>
private void Button_Click(object sender, RoutedEventArgs e)
{
// do smt
}
This was the most straight forward approach I've seen without having to override all the visual styles for the button. –
Daiquiri
I've gone with this approach, but reusability goes out the window, since you're effectively hard-coding in the image name. But, it fits my needs. –
Khotan
@Daiquiri see my answer then. –
A1
ok but no hover image ? it does not act as a real button here –
Cheyennecheyne
Well, after a little more fiddling, a simple button does the job. Here it is:
<Button Command="{Binding Path=DisplayProductCommand}" >
<Image Source="..\Images\my-beautiful-product.jpg"/>
</Button>
This is not a clickable image, this is a button with an image inside it. I'm baffled that this is marked as the accepted answer. This should be the accepted answer. –
Luckett
<Image Name="imageFoo" Source="/AppFoo;component/Foo.png" Width="32" Cursor="Hand" MouseUp="imageFoo_MouseUp"/>
private void imageFoo_MouseUp(object sender, MouseButtonEventArgs e)
{
//Do something
}
Sorry, mico, for not completely understanding your requirement. Let me leave my answer there just in case anyone needs a quick way to have a clickable image. –
Alarmist
There are several ways to do this, but one simple solution would be to use a button (maybe style away the border and background), and use the image as the content of the button.
You can later use a ListBox or similar, and override the DataTemplate to use the button and an image for each product.
This is in fact the first route I was taking, but I am wondering if there is a cleaner solution. –
Fractocumulus
I don't know about you guys but PreviewMouseDown
and TouchUp
worked completely fine along with my binding:
<Image x:Name="bla" Source="{Binding blabla}" ... TouchDown="bla_TouchDown" PreviewMouseDown="bla_PreviewMouseDown">
I am using VS 2015
© 2022 - 2024 — McMap. All rights reserved.