2011-04-04 170 views
8

我有一個包含日曆控件和按鈕的TabItem。問題是,當日歷的選定日期與先前選擇的日期相同時,該按鈕需要兩次點擊來觸發其Click事件。WPF按鈕需要點擊兩次點擊事件

我已經實現日曆的selectedDatesChanged事件來解決這個問題,當前選擇的日期不同於以前的選擇。代碼如下:

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

我正在尋找一種方法以在上述功能所示,當日歷的selectedDate不會從先前選定的日期不同,相同的效果。 我試着處理GotFocus和MouseUp事件,但它不能解決問題。

有沒有人有任何想法如何解決這個問題?

感謝, 納文

+0

我通過處理日曆的PreviewMouseUp事件來解決問題。 – naveen 2011-04-04 19:28:08

+3

如果您的問題得到解決,會建議您發佈解決方案作爲答案,然後接受它。具有類似問題的用戶將看到一個被接受的答案,而不是一個解決方案的評論。 – publicgk 2011-04-05 10:22:36

+0

這仍然是日曆控件的問題。在任何時候你都要關注它,你需要點擊兩次其他控件才能得到迴應。任何人都得到了很好的解決 – MikeKulls 2011-06-21 05:04:22

回答

12

這個問題是最好的答案,我在網上找到。它仍然不是完美的,因爲它沒有幫助標記爲IsDefault或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

原始來源似乎在這裏:http://social.msdn.microsoft.com/Forums/vstudio/en-US/b4413872-59d0-4a06-9d20-8d21de126dc6/calendar-not-losing-focus-wpf-40 ?論壇= WPF – SepehrM 2014-07-23 17:34:10

6

你可以簡單地寫:

Mouse.Capture(null); 

這將解決鼠標持有焦點