user3793935 user3793935 - 1 year ago 85
C# Question

C# WPF Want the child of the Stackpanel on click

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;

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?

Answer Source

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


private void StackPanel_PreviewMouseDown(object sender, MouseButtonEventArgs e)
    if (e.OriginalSource is Image)
        string imageSource = ((Image)e.OriginalSource).Source.ToString();