2010-03-11 8 views
28

Sto utilizzando il calendario WPF che fa parte del WPF Toolkit.WPF Toolkit Il calendario richiede due clic per ottenere lo stato attivo

Ho due calendari diversi su un controllo. Quando cerco di scegliere una data da un calendario e poi dal secondo calendario, devo cliccare due volte sul secondo calendario per farlo scegliere una data.

Qualcun altro ha riscontrato questo problema e conosce una soluzione?

+0

Hmm, non ho mai notato Calendario comportarsi stranamente troppo, ma io non l'ho usato troppo, e forse non nella stessa situazione come te. Detto questo, i controlli WPF Toolkit non sono davvero perfetti, quindi questo problema è del tutto credibile. –

+6

Cordiali saluti, sto riscontrando questo problema anche con il calendario WPF all'interno di .NET Framework 4.0 – Luke

risposta

34

Il calendario può catturare il mouse senza modificare la data (ad esempio, nel drill di CalendarMode in basso). Una soluzione migliore è questa:

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

Questa è una soluzione migliore. Mi piace .... – timothymcgrath

+0

Questo ha risolto un problema per me in cui l'intervallo di date selezionato è stato perso quando un altro controllo ha ricevuto l'evento del mouse su. – mjcopple

+1

Raccomando la versione estesa di questo codice http://stackoverflow.com/questions/5543119/wpf-button-takes-two-clicks-to-fire-click-event –

4

Ho aggiunto questo codice quando ho cambiato i dati selezionati del calendario e ha risolto il 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 riga Me.DisplayDate è solo per spostare la vista su SelectedDate, questo non è necessario per la correzione. – timothymcgrath

+0

Questo lavoro per me, grazie per la soluzione. (C#) – Jirapong

+0

Grazie! Ciò ha risolto il problema per me quando si utilizza il controllo di calendario di .NET Framework 4.0. Sembra che il bug sia persistito fino all'attuale versione finale di .NET 4.0 – Luke