単純な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は空の値(つまり、「<ここにテキストを入力>」)を表示し、ユーザーがタブで移動するたびにプロパティをnullに更新しようとします。
DatePickerに現在の変更されていない値を表示させるにはどうすればよいですか?
Docのコメントの回答に基づいて、これを少し一般化させてください。
ドロップダウンを使用すると、この方法で日付の変更を拒否できます(たとえば、範囲を制限したい場合)。
ただし、キーボードを使用する場合、入力した内容はすべてそこに残り、DatePickerはフォーカスを失うたびにキーボードをコミットしようとします。