WPF按钮需要两次点击才能触发Click事件

时间:2011-04-04 19:09:57

标签: wpf calendar focus controls

我有一个TabItem,其中包含一个日历控件和一个按钮。问题是,当日历的选定日期与之前选择的日期相同时,该按钮需要两次点击才能触发其Click事件。

我已经实现了日历的selectedDatesChanged事件,以便在当前所选日期与上一个选择不同时解决此问题。代码如下:

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

我正在寻找的是当日历的selectedDate与之前选择的日期没有差异时,在上述函数中显示相同效果的方法。 我尝试处理GotFocus和MouseUp事件,但它没有解决问题。

有没有人对如何解决这个问题有任何想法?

谢谢, 纳温

2 个答案:

答案 0 :(得分:14)

这是我在网上找到的最佳答案。它仍然不完美,因为它对标记为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);
  }
}

答案 1 :(得分:6)

你可以写一下:

Mouse.Capture(null);

这将解决鼠标保持焦点的问题