2010-03-11 8 views
28

Estoy usando el calendario de WPF que es parte de WPF Toolkit.WPF Toolkit Calendar lleva dos clics para obtener el foco

Tengo dos calendarios diferentes en un control. Cuando intento elegir una fecha de un calendario y luego del segundo calendario, tengo que hacer clic en el segundo calendario dos veces para que elija una fecha.

¿Alguien más ha tenido este problema y conoce una solución?

+0

Hmm, nunca me di cuenta de Calendario comportarse extrañamente también, pero yo no lo he utilizado demasiado, y posiblemente no en la misma situación que tú. Dicho esto, los controles del WPF Toolkit no son realmente perfectos, por lo que este problema es completamente creíble. –

+6

Para su información, también estoy experimentando este problema con el calendario de WPF dentro de .NET Framework 4.0 – Luke

Respuesta

34

El calendario puede capturar el mouse sin un cambio de fecha (por ejemplo, en Desglose del modo Calendario). Una mejor solución es la siguiente:

protected override void OnPreviewMouseUp(MouseButtonEventArgs e) 
{ 
    base.OnPreviewMouseUp(e); 
    if (Mouse.Captured is CalendarItem) 
    { 
     Mouse.Capture(null); 
    } 
} 
+1

Esta es una solución mejor. Me gusta ... – timothymcgrath

+0

Esto me solucionó un problema en el que se perdía el rango de fechas seleccionado cuando otro control recibía el evento del mouse arriba. – mjcopple

+1

Recomiendo la versión extendida de este código http://stackoverflow.com/questions/5543119/wpf-button-takes-two-clicks-to-fire-click-event –

4

Agregué este código al cambiar los SelectedDates del Calendario y solucionó el problema.

 Private Sub Calendar_SelectedDatesChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles Me.SelectedDatesChanged 
     Me.DisplayDate = CType(Me.SelectedDate, DateTime) 

     ' This is to prevent the Calendar DayButtons from holding the focus in the Calendar. 
     Me.CaptureMouse() 
     Me.ReleaseMouseCapture() 
    End Sub 
+0

La línea Me.DisplayDate es solo para mover la vista al SelectedDate, esto no es necesario para la corrección. – timothymcgrath

+0

Esto funciona para mí, gracias por su solución. (C#) – Jirapong

+0

¡Gracias! Esto solucionó el problema cuando usé el control de calendario de .NET Framework 4.0. Parece que el error persistió hasta el lanzamiento final actual de .NET 4.0 – Luke

Cuestiones relacionadas