2011-04-04 22 views
8

Tengo un TabItem que contiene un control de calendario y un botón. El problema es que cuando la fecha seleccionada del calendario es la misma que la fecha seleccionada previamente, el botón tarda dos clics en iniciarse su evento Click.El botón WPF lleva dos clics para disparar Haga clic en evento

He implementado el evento selectedDatesChanged del calendario para resolver este problema cuando la fecha seleccionada actual es diferente de la selección anterior. El código es la siguiente:

selectedDatesChanged(object sender, SelectionChangedEventArgs e) 
{ 
    this.CaptureMouse(); 
    this.ReleaseMouseCapture(); 
} 

Lo que estoy buscando es una manera de tener el mismo efecto se muestra en la función anterior cuando el selectedDate del calendario no difiere de la fecha seleccionada previamente. He intentado manejar los eventos GotFocus y MouseUp, pero no resuelve el problema.

¿Alguien tiene alguna idea sobre cómo podría resolver este problema?

Gracias, Naveen

+0

He resuelto el problema manejando el evento PreviewMouseUp del calendario. – naveen

+3

si se resuelve su problema, le recomendamos que publique su solución como respuesta y luego la acepte. Los usuarios con problemas similares verían una solución como una respuesta aceptada en lugar de un comentario. – publicgk

+0

Esto sigue siendo un problema con el control de calendario. En cualquier momento que le preste atención, debe hacer clic en otros controles dos veces para obtener una respuesta. Alguien tiene una buena solución? – MikeKulls

Respuesta

12

Ésta era la mejor respuesta que encontré en la web. Todavía no es perfecto porque no ayuda con los botones que están marcados como IsDefault o IsCancel

protected override void OnPreviewMouseUp(MouseButtonEventArgs e) 
{ 
    base.OnPreviewMouseUp(e); 
    if (Mouse.Captured is Calendar || Mouse.Captured is System.Windows.Controls.Primitives.CalendarItem) 
    { 
    Mouse.Capture(null); 
    } 
} 
+0

La fuente original parece estar aquí: http://social.msdn.microsoft.com/Forums/vstudio/en-US/b4413872-59d0-4a06-9d20-8d21de126dc6/calendar-not-losing-focus-wpf-40 ? forum = wpf – SepehrM

6

Usted simplemente puede escribir:

Mouse.Capture(null); 

Esto va a resolver el problema de ratón que sostiene enfoque

Cuestiones relacionadas