我定义了一个简单的 DatePicker:
<DatePicker SelectedDate="{Binding SomeDate}"/>
而且我想防止用户在某些情况下清除该值。
这是我到目前为止得到的:
public DateTime? SomeDate
{
get { return someDate; }
set
{
if (someDate != value)
{
if (value == null && someCondition)
TellTheUserHeCannotClearTheField();
else
someDate = value;
NotifyPropertyChanged(() => SomeDate);
}
}
}
虽然这可以防止基础字段被更新,但 DatePicker 仍然显示一个空值(即"<Enter text here>"),并在每次用户通过它进行选项卡时再次尝试将属性更新为 null。
如何强制 DatePicker 显示当前未更改的值?
根据Doc的评论回答,让我概括一下。
使用下拉菜单时,可以以这种方式拒绝日期更改(例如,如果我想限制范围)。
但是,如果您使用键盘,您输入的任何内容都会保留在那里,并且 DatePicker 会在每次失去焦点时尝试提交它。