WPF Toolkit日历需要两次点击才能获得焦点。

30

我正在使用WPF工具包中的WPF日历。

我在一个控件上有两个不同的日历。当我尝试从一个日历选择一个日期,然后再从第二个日历选择日期时,我必须点击第二个日历两次才能选择日期。

是否有其他人遇到过这个问题并知道解决方法?


嗯,我从未注意到日历表现得太奇怪,但我没有使用它太多,可能不是在与您相同的情况下。话虽如此,WPF工具包控件并不完美,因此这个问题是完全可信的。 - Benny Jobigan
7
我也遇到了在.NET Framework 4.0中使用WPF日历控件的问题。 - Luke
2个回答

35

日历可以在不改变日期的情况下捕获鼠标(例如,在CalendarMode向下钻取时)。 更好的解决方案是这样的:

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

1
这个修复解决了我的一个问题,即当另一个控件接收到鼠标抬起事件时,所选日期范围丢失的问题。 - mjcopple
2
我建议使用这段代码的扩展版本 https://dev59.com/x2035IYBdhLWcg3wPNZk - NoWar

5

当我更改日历的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

Me.DisplayDate这一行只是为了将视图移动到SelectedDate,这对于修复不是必需的。 - timothymcgrath
1
谢谢!这解决了我在使用.NET Framework 4.0日历控件时遇到的问题。看起来这个bug一直存在于当前的.NET 4.0最终版本中。 - Luke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接