如何知道弹出菜单是如何关闭的?

时间:2012-09-19 15:08:09

标签: wpf event-handling calendar datepicker

我有一个WPF DatePicker,就像任何一个日期选择器一样,它有一个内置日历,你可以点击小日历图标打开它。

这个日历放在一个弹出菜单中,所以它的行为就像一个,即:一旦打开,有2种方法可以关闭它:

  • 验证您的选择(使用鼠标单击日期,点击“Enter”并突出显示日期等)。
  • 取消(点击“Echap”,点击弹出窗口等等...)

我的问题是,我需要知道使用了哪一个,而且我似乎找不到办法来做到这一点。

现在我听“CalendarClosedEvent”,但它没有告诉我 日历是如何关闭的。

我还使用“PreviewKeyDownEvent”来捕获“Echap”键,该键效果很好,但不包括当用户点击日历以关闭它时的情况。

有办法做到这一点吗?如果是的话,它是什么?

(注意:我对关于弹出菜单对象而不是datePicker中的日历对象的通用答案感到满意)

1 个答案:

答案 0 :(得分:1)

至少对于DatePicker,您可以将SelectedDate设置为null(实际上是默认值,只需保留)。然后,只要用户在控件内单击,就会触发SelectedDateChanged。

这是我唯一能找到标记差异的东西。希望它有所帮助。