2010-03-11 45 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

相关问题