I am using StackPanels. In my application I have to show a multi tiff with 3 to x images and have to open them in a new window after I click on one of them.
Showing them is easy:
public void Bilder_anzeigen(string path)
{
TiffBitmapDecoder decoder = new TiffBitmapDecoder(new Uri(path), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
foreach (var i in decoder.Frames)
{
Image myImage = new Image();
myImage.Source = i;
Stackpanel_Tiff.Children.Add(myImage);
}
}
But how can I get a child with a click on the StackPanel? There is a MouseDown Event, but after it is raised, I don't know on which image i clicked. I just know there was a click. How can I find the image that was clicked?
You can find out which Image
was clicked on very easily using the PreviewMouseDown
event and the OriginalSource
of the MouoseButtonEventArgs
object:
<StackPanel PreviewMouseDown="StackPanel_PreviewMouseDown">
<Image Source="Images/Add_16.png" Stretch="None" />
<Image Source="Images/Edit_16.png" Stretch="None" />
<Image Source="Images/Copy_16.png" Stretch="None" />
</StackPanel>
...
private void StackPanel_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (e.OriginalSource is Image)
{
string imageSource = ((Image)e.OriginalSource).Source.ToString();
}
}
Try OriginalSource of eventargs. OriginalSource give the control on which MouseDown
private void Sp_MouseDown_1(object sender, MouseButtonEventArgs e)
{
var image=e.OriginalSource as Image;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With