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

nav*_*een 9 wpf controls calendar focus

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

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

selectedDatesChanged(object sender, SelectionChangedEventArgs e)
{
    this.CaptureMouse();
    this.ReleaseMouseCapture();
}
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢,Naveen

Mik*_*lls 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);
  }
}
Run Code Online (Sandbox Code Playgroud)


Has*_*him 6

你可以简单地写:

Mouse.Capture(null);
Run Code Online (Sandbox Code Playgroud)

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