【发布时间】:2016-05-11 20:49:15
【问题描述】:
我有一个DatePicker 元素和一个按钮。如果我选择某个日期,然后从DatePicker 内的DatePickerTextBox 中删除文本,并且不失去对其他内容的关注,我点击我的Button:
MyDatePicker.SelecteDate 不会为空,但MyDatePicker.Text 会。
如何避免这个问题?
【问题讨论】:
我有一个DatePicker 元素和一个按钮。如果我选择某个日期,然后从DatePicker 内的DatePickerTextBox 中删除文本,并且不失去对其他内容的关注,我点击我的Button:
MyDatePicker.SelecteDate 不会为空,但MyDatePicker.Text 会。
如何避免这个问题?
【问题讨论】:
我可以解决此问题的唯一方法是用我的自定义替换密封的 DatePickerTextBox,将 override 添加到 KeyDown 事件。
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
base.OnPreviewKeyDown(e);
if (e.Key == Key.Back || e.Key == Key.Delete)
{
if (SelectionLength == Text.Length ||
(Text.Length == 1 && (SelectionStart == 0 && e.Key == Key.Delete || SelectionStart == 1 && e.Key == Key.Back)))
Text = null;
RaiseEvent(new RoutedEventArgs(TextChangedEvent));
}
}
当然,我必须替换 DatePicker 的主题才能开始使用我的自定义 TextBox。
【讨论】: