2010-03-11 75 views
28

我正在使用屬於WPF Toolkit的WPF日曆。WPF工具包日曆需要兩次點擊才能獲得焦點

我在控件上有兩個不同的日曆。當我嘗試從一個日曆中選擇一個日期,然後從第二個日曆中選擇一個日期時,我必須點擊第二個日曆兩次才能選擇一個日期。

有沒有其他人有這個問題,並知道一個解決方案?

+0

嗯,我從來沒有注意到日曆行爲太古怪,但我沒有用太多,可能不是在相同的情況下,你。也就是說,WPF Toolkit控件並不完美,所以這個問題是完全可信的。 – 2010-03-11 15:05:04

+6

僅供參考,我也遇到過.NET Framework 4.0中WPF日曆的問題 – Luke 2011-05-30 09:41:36

回答

34

日曆可以在沒有日期變化的情況下捕獲鼠標(例如,在CalendarMode下鑽中)。 更好的解決辦法是這樣的:

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

這是一個更好的解決方案。我喜歡它...... – timothymcgrath 2011-02-21 14:59:01

+0

這爲我解決了一個問題,當其他控件收到鼠標向上事件時,所選日期範圍丟失。 – mjcopple 2011-12-14 18:32:21

+1

我推薦這段代碼的擴展版本http://stackoverflow.com/questions/5543119/wpf-button-takes-two-clicks-to-fire-click-event – 2015-01-19 17:24:37

4

我在更改日曆的SelectedDates時添加了此代碼,並修復了問題。

 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

Me.DisplayDate行只是將視圖移動到SelectedDate,這不是修補程序所需要的。 – timothymcgrath 2010-03-22 12:54:08

+0

這個工作對我來說,謝謝你的解決方案。 (C#) – Jirapong 2010-09-08 06:13:13

+0

謝謝!這解決了使用.NET Framework 4.0日曆控件時遇到的問題。看來這個bug一直持續到當前最終版本的.NET 4.0 – Luke 2011-05-30 09:44:16

相關問題