Hola,
Çomo puedes comprobar, el control Label no tiene evento Click, lo cual hace muy complicado el conseguir el efecto de un Click. Tendrías que crear una clase derivada de Label para hacerlo correctamente. Hay ejemplos en inglés de como hacerlo (busca por la web porque el foro no me deja poner enlaces).
De todas formas, te recomiendo que uses el control Button porque es el control ideal cuando quieres hacer Click (y puedes darle la apariencia que quieras)
Suponiendo que usas el control Button, lo primero que tienes que hacer es crear el metodo que tratara el evento y que recibira el Control Button como el objeto sender.
Cuando se ejecute ese método al hacer click sobre un Button, tienes que hacer "casting" del objeto sender sobre un campo Button. Como has guardado el "id" en la propiedad Content, te puede servir para identificar el Button haciendo "casting" sobre una string (alternativamente puedes guardar cualquier identificador en la propiedad Tag).
Por último, inserta en tu codigo la siguiente asignación:
b.Click=boton_Click;(El procedimiento es el mismo en caso de que uses una clase derivada del control Label con el evento Click creado como la del ejemplo en ingles)
El conjunto queda de la siguiente forma:
void boton_Click(object sender, RoutedEventArgs e)
{
Button boton=(Button)sender;
string id = (string)boton.Content;
switch (id)
{
case "xxxxxxx":
//codigo para id xxxxxxx
break;
case "yyyyyyy":
//codigo para id yyyyyyy
break;
default:
break;
}
}
void home_ListChanged()
{
int index = 0;
while (index < home.List.Count)
{
Image image
= new Image
(); string id = ((Furniture)home.List.ElementAt(index)).Id;
image
.Source = new BitmapImage
(new Uri
(@"/Frontend;component/Images/" + id
+ ".png", UriKind
.Relative)); image.Width = home.List.ElementAt(index).Width;
image.Height = home.List.ElementAt(index).Height;
canvas.Children.Add(image);
b.Content = id;
mappingIda.Add(((Furniture)home.List.ElementAt(index)), image);
stackPanel.Children.Add(l);
b.Click=boton_Click;
index++;
}
}
Espero que sirva de ayuda
Saludos