• Martes 21 de Abril de 2026, 10:46

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - SERware

Páginas: [1]
1
C# / Re: Eventos del stackpanel en WPF, Visual Studio
« en: Jueves 2 de Junio de 2011, 21:51 »
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:

Código: C#
  1.  
  2.  
  3. void boton_Click(object sender, RoutedEventArgs e)
  4. {
  5.             Button boton=(Button)sender;
  6.             string id = (string)boton.Content;
  7.             switch (id)
  8.             {
  9.                 case "xxxxxxx":
  10.                     //codigo para id xxxxxxx
  11.                     break;
  12.                 case "yyyyyyy":
  13.                     //codigo para id yyyyyyy
  14.                     break;
  15.                 default:
  16.                     break;
  17.             }
  18.  }
  19.  
  20.  
  21. void home_ListChanged()
  22.  {
  23.  int index = 0;
  24.  
  25.  while (index < home.List.Count)
  26.  {
  27.  button b = new Button();
  28.  Image image = new Image();
  29.  string id = ((Furniture)home.List.ElementAt(index)).Id;
  30.  image.Source = new BitmapImage(new Uri(@"/Frontend;component/Images/" + id + ".png", UriKind.Relative));
  31.  image.Width = home.List.ElementAt(index).Width;
  32.  image.Height = home.List.ElementAt(index).Height;
  33.  canvas.Children.Add(image);
  34.  b.Content = id;
  35.  mappingIda.Add(((Furniture)home.List.ElementAt(index)), image);
  36.  stackPanel.Children.Add(l);
  37.  b.Click=boton_Click;
  38.  index++;
  39.  }
  40.  }
  41.  
  42.  

Espero que sirva de ayuda

Saludos

Páginas: [1]