Calendar控件日期选择后,没有释放焦点,导致同一窗口的其它控件无法获取到鼠标事件,需要先点击一次获取焦点,再次点击才能响应鼠标事件。
该问题的根本原因是Calendar控件捕获了鼠标焦点,导致其它控件无法获取焦点,可以在MouseUp事件中自动释放焦点,具体实现如下:
private void Calendar_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
//第一种方法
if (Mouse.Captured is CalendarItem)
{
Mouse.Capture(null);
}
//第二种方法
if (sender != null)
{
UIElement el = (UIElement)sender;
el.ReleaseStylusCapture();
}
}