【问题标题】:WPF button takes two clicks to fire Click eventWPF 按钮需要两次单击才能触发 Click 事件
【发布时间】:2011-07-29 10:11:55
【问题描述】:

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

我已经实现了日历的 selectedDatesChanged 事件来解决当前选择的日期与之前选择的日期不同时的这个问题。代码如下:

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

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

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

谢谢, 纳文

【问题讨论】:

  • 我通过处理日历的 PreviewMouseUp 事件解决了这个问题。
  • 如果您的问题得到解决,建议您将解决方案发布为答案,然后接受它。有类似问题的用户会看到一个已接受的答案,而不是作为解决方案的评论。
  • 这仍然是日历控件的问题。任何时候你把注意力放在它上面,你都需要点击其他控件两次才能得到响应。谁有好的解决方案?

标签: wpf calendar focus controls


【解决方案1】:

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

【讨论】:

【解决方案2】:

你可以简单地写:

Mouse.Capture(null);

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

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 1970-01-01
    • 2013-05-10
    • 2017-09-23
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多