none
¿Cómo hacer que una imagen en XAML tenga un evento 'click' ? RRS feed

Respuestas

  • Hola Igor.

    Si, esa es una opcion,por ampliar un poco el tema y que sirva un poco de guia:

    Si fuese una imagen con mas contenido o se quieran las propiedades de un boton seria la mejor opcion, pero si solo se quiere implementar un evento de click en una imagen, es mas optimo usar el evento mouseDown o alguno similar.

    ¿por que digo esto?, por que una imagen hereda de FrameworkElement directamente y un boton tiene 4 herencias desde FrameworkElement, obviamente, para el mismo resultado, es un objeto mas pesado y ambos tienen el mismas ventajas en cuanto al binding de datos, ya que toda la funcionalidad se establece en la clase FrameworkElement.

    Otra cosa es que se quieran las propiedades de un boton, como una tecla de acceso, o disponer del foco para pulsar enter, etc. aqui si que tendria utilidad.

    Ademas se debe tener en cuenta que el sistema de eventos no es como en Winforms u otras tecnologias, WPF/silverlight, se basa en una tecnologia de presentacion y como tal se debe pensar de otra forma a la hora de programar y usar eventos.

    de echo, lo que ocurre en un boton es lo siguiente:

    Cuando pulsas un boton, la clase ButtonBase marca el evento MouseLeftButtonDown como manejado y se lanza el evento Click del boton, con lo cual se invalida el evento MouseLeftButtonDown automaticamente y no funcionara (OJO: esto hay que tenerlo en cuenta), auque se puede usar algun evento de previsualizacion como PreviewLeftButtonDown.

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    • Marcado como respuesta Igor_DC miércoles, 9 de marzo de 2011 16:19
    miércoles, 9 de marzo de 2011 15:49

Todas las respuestas

  • Hola Igor.

    Esto hace poco que se pregunto en otro control.

    En WPF no existe el evento click mas que para botones y algun que otro control mas. En la mayoria de controles el evento es una accion de raton como mouseDown, mouseleftButton, mouserightButton y sus versiones 'up'.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    • Propuesto como respuesta CorsarioVasco miércoles, 9 de marzo de 2011 6:26
    martes, 8 de marzo de 2011 17:23
  • Hola David,


    Gracias por la respuesta. Al final lo solucione de una manera muy distinta.

     

    Para quien le interese, que sepa que si se puede hacer lo contrario, es decir que un Button tenga una Imagen (hay que usar Button.Template e incluir ahí una imagen)

    miércoles, 9 de marzo de 2011 10:37
  • Hola Igor.

    Si, esa es una opcion,por ampliar un poco el tema y que sirva un poco de guia:

    Si fuese una imagen con mas contenido o se quieran las propiedades de un boton seria la mejor opcion, pero si solo se quiere implementar un evento de click en una imagen, es mas optimo usar el evento mouseDown o alguno similar.

    ¿por que digo esto?, por que una imagen hereda de FrameworkElement directamente y un boton tiene 4 herencias desde FrameworkElement, obviamente, para el mismo resultado, es un objeto mas pesado y ambos tienen el mismas ventajas en cuanto al binding de datos, ya que toda la funcionalidad se establece en la clase FrameworkElement.

    Otra cosa es que se quieran las propiedades de un boton, como una tecla de acceso, o disponer del foco para pulsar enter, etc. aqui si que tendria utilidad.

    Ademas se debe tener en cuenta que el sistema de eventos no es como en Winforms u otras tecnologias, WPF/silverlight, se basa en una tecnologia de presentacion y como tal se debe pensar de otra forma a la hora de programar y usar eventos.

    de echo, lo que ocurre en un boton es lo siguiente:

    Cuando pulsas un boton, la clase ButtonBase marca el evento MouseLeftButtonDown como manejado y se lanza el evento Click del boton, con lo cual se invalida el evento MouseLeftButtonDown automaticamente y no funcionara (OJO: esto hay que tenerlo en cuenta), auque se puede usar algun evento de previsualizacion como PreviewLeftButtonDown.

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    • Marcado como respuesta Igor_DC miércoles, 9 de marzo de 2011 16:19
    miércoles, 9 de marzo de 2011 15:49
  • sos un pelotudo como o vas a saber puto de mierda

     

    sábado, 3 de septiembre de 2011 11:22
  • oye... sabiondo,.. si uno pregunta es por que no sabe y estos foros son para aprender,... la verdad es q deberian banearte por q el pelotudo sos vos. bue.. no se pa q pierdo el tiempo,.. volvete al olimpo q haces entre mortales??
    Salu2 Sergio T
    sábado, 14 de enero de 2012 20:21
  • Hola Sergio.

    No vale la pena contestar y entrar en el trapo con este tipo de gente, lamentablemente siempre van a existir este tipo de personajes en todo el mundo.

    Lo mejor es ignorarlos y notificar el abuso. !Todos necesitamos ayuda alguna vez, ya le tocara a el!.

    !Feliz año nuevo!


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    domingo, 15 de enero de 2012 10:15
  • <Button>
    <Button.Content>
    <StackPanel>
                                    
                          <Image  Source="Assets\Title\sdfsdfa.png"></Image>
    <TextBlock Text="Me llamo leonel"/>
    </StackPanel>
    </Button.Content>
    </Button>

    Leonel Rojas

    jueves, 27 de junio de 2013 0:01
  • Gracias, sin tanto problema y claro.
    viernes, 29 de noviembre de 2019 19:28