none
Doble Clic en Silverlight 4 RRS feed

Respuestas

  • Hola Hector.

    El doble click no esta implementado pero no es dificil de implementar.

    algo sencillo puede ser un codigo como este:

        /// <summary>
        /// Variable para implementar doble click
        /// </summary>
        private DateTime m_lastClick = DateTime.Now;     
    
        private void event_MouseLeftButtonDblClick(object sender, MouseButtonEventArgs e) 
        {
          // obtener el intervalo de tiempo
          TimeSpan interval = DateTime.Now - m_lastClick;
          // guardar el tiempo actual
          m_lastClick = DateTime.Now;
          // comprobar si es doble click
          if (interval.Milliseconds > 200) return;
    
          // TODO: acciones del evento doble click            
        }

     

    Si quieres algo mejor y mas generico puedes hacer uso de esta clase estatica que es muy interesante:

    http://yinyangme.com/blog/post/The-simplest-way-to-detect-DoubleClick-in-Silverlight.aspx

    incluso la puedes adaptar como un metodo extensor para el grid o de multiples formas.

     


    Saludos
    David González
    • Marcado como respuesta Hector MCT viernes, 28 de mayo de 2010 14:43
    viernes, 28 de mayo de 2010 10:46
  • La solucion la logre de la siguiente manera, se las dejo por si alguien la necesita:

    en mi constructor coloque el siguiente codigo

    InitializeComponent();
    this.gridBusquedaVisitaRegistrada.RowLoaded += OnClickGridBusquedas;

    posteriormente tengo esto en el evento OnClick...

    private void OnClickGridBusquedas(object sender, RowLoadedEventArgs e)
     {
     Mouse.AddMouseUpHandler(e.Row, dobleClick);
     }

    y finalmente :

    private void dobleClick(object sender, Telerik.Windows.Input.MouseButtonEventArgs e)
     {
     if (e.ClickCount==2)
      {
      var row = sender as GridViewRow;
       if (row != null)
       {
       //Dio doble Click :) y hago lo que quiero con los datos
       }
      }
     }

    Saludos y pues lo using son para

    using Telerik.Windows.Controls.GridView;
    using Telerik.Windows.Input;
    • Marcado como respuesta Hector MCT lunes, 31 de mayo de 2010 21:54
    lunes, 31 de mayo de 2010 21:53

Todas las respuestas

  • Hola Hector.

    El doble click no esta implementado pero no es dificil de implementar.

    algo sencillo puede ser un codigo como este:

        /// <summary>
        /// Variable para implementar doble click
        /// </summary>
        private DateTime m_lastClick = DateTime.Now;     
    
        private void event_MouseLeftButtonDblClick(object sender, MouseButtonEventArgs e) 
        {
          // obtener el intervalo de tiempo
          TimeSpan interval = DateTime.Now - m_lastClick;
          // guardar el tiempo actual
          m_lastClick = DateTime.Now;
          // comprobar si es doble click
          if (interval.Milliseconds > 200) return;
    
          // TODO: acciones del evento doble click            
        }

     

    Si quieres algo mejor y mas generico puedes hacer uso de esta clase estatica que es muy interesante:

    http://yinyangme.com/blog/post/The-simplest-way-to-detect-DoubleClick-in-Silverlight.aspx

    incluso la puedes adaptar como un metodo extensor para el grid o de multiples formas.

     


    Saludos
    David González
    • Marcado como respuesta Hector MCT viernes, 28 de mayo de 2010 14:43
    viernes, 28 de mayo de 2010 10:46
  • La solucion la logre de la siguiente manera, se las dejo por si alguien la necesita:

    en mi constructor coloque el siguiente codigo

    InitializeComponent();
    this.gridBusquedaVisitaRegistrada.RowLoaded += OnClickGridBusquedas;

    posteriormente tengo esto en el evento OnClick...

    private void OnClickGridBusquedas(object sender, RowLoadedEventArgs e)
     {
     Mouse.AddMouseUpHandler(e.Row, dobleClick);
     }

    y finalmente :

    private void dobleClick(object sender, Telerik.Windows.Input.MouseButtonEventArgs e)
     {
     if (e.ClickCount==2)
      {
      var row = sender as GridViewRow;
       if (row != null)
       {
       //Dio doble Click :) y hago lo que quiero con los datos
       }
      }
     }

    Saludos y pues lo using son para

    using Telerik.Windows.Controls.GridView;
    using Telerik.Windows.Input;
    • Marcado como respuesta Hector MCT lunes, 31 de mayo de 2010 21:54
    lunes, 31 de mayo de 2010 21:53
  • Hola Hector.

    Supongo que ya lo sabes por que los estas usando, pero el uso de los controles Telerik es una solucion de pago, a no ser que ya se disponga de ellos por otro motivo, no vale la pena comprarlos para implementar un doble click.

    Y por otra parte, no te aconsejo el uso de controles de terceros para pequeñas implementaciones, a no ser que no exista mas remedio, ya que dependes de ello y en un futuro pueden dejar de desarrollarlos (como ha pasado con la mayoria de controles de Delphi).

    Si haces uso de ello, tenlo bien documentado para modificarlo en un futuro si es necesario.

     

     

     


    Saludos
    David González
    martes, 1 de junio de 2010 6:11
  • Efectivamente si son de pago (que por cierto nada economicos jejeje), y por motivos X de la compañia son los que me pidieron usar ya que tienen toda la suite de telerik, pero es muy buen consejo para posteriores desarrollos utilizar los que posiblemente nunca dejen de existir :)

    Saludos

    • Propuesto como respuesta gblumen jueves, 27 de octubre de 2011 22:49
    • Votado como útil gblumen jueves, 27 de octubre de 2011 22:49
    miércoles, 2 de junio de 2010 13:03
  • Hola a todos, yo tambien buscaba como llamar al evento dobleclick sobre fila en un datagrid (silverlight), me canse de buscar y opte por hacer lo siguiente:

    • poner en mi datagrid el atributo isreadonly=false (mi grilla es editable)
    • instanciar el evento datagrid1_PreparingCellForEdit()
    • y poner ahi micodigo
    Private void datagrid1_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e)
            {
                this.datagrid1.IsReadOnly = true;//bloqueo midatagrid
                //luego pongo mi codigo que pondria en el evento onDobleClick,que en mi caso consiste en abrir otra pagina silverlight
                this.Content = new appRegistroForm();
            }
    

    como ven solo esty simulando el evento dobleclick, si tienen alguna opinion haganmela saber, o si conocen otra forma corta de hacerlo tambien, saludos....



    • Editado gblumen lunes, 31 de octubre de 2011 21:52
    • Propuesto como respuesta gblumen lunes, 31 de octubre de 2011 21:52
    jueves, 27 de octubre de 2011 22:56