I have an application with many images that all look the same and perform similar tasks:
<Image Grid.Column="1" Grid.Row="0" Name="image_prog1_slot0" Stretch="Uniform" Source="bullet-icon.png" StretchDirection="Both" MouseDown="image_prog1_slot0_MouseDown"/>
<Image Grid.Column="1" Grid.Row="1" Name="image_prog1_slot1" Stretch="Uniform" Source="bullet-icon.png" StretchDirection="Both" />
<Image Grid.Column="1" Grid.Row="2" Name="image_prog1_slot2" Stretch="Uniform" Source="bullet-icon.png" StretchDirection="Both" />
Now, I want to link each one to the same event handler:
private void image_MouseDown(object sender, MouseButtonEventArgs e)
{
//this_program = ???;
//this_slot = ???;
//slots[this_program][this_slot] = some value;
}
Obviously the program number and slot number of the image are part of its name. Is there a way to extract this information when the event handler is fired?
Yes, it is possible.
As its name suggests, the
senderparameter contains the object which fired the event.You can also use the
Grid‘s attached properties for convenience to determine which row and column it is in. (It is also possible to get other attached properties this way.)Side note:
You can also use the
Tagproperty to store custom information about controls. (It can store any objects.)