Не удается получить привязку к работе WPF DatePicker, как ожидалось с ReactiveUI. Привязка устанавливается в коде, подобном следующему:
this.Bind(this.ViewModel, x => x.MyDate, x => x.DPMyDate.SelectedDate, DPMyDate.Events().LostKeyboardFocus).DisposeWith(disposables);
В файле XAML это выглядит так:
<DatePicker Name="DPMyDate"></DatePicker>
, а свойство привязки выглядит так:
private DateTime myDate;
public DateTime MyDate
{
get { return myDate; }
set
{
this.RaiseAndSetIfChanged(ref myDate, value);
}
}
Изменение даты с помощью календаря работает, как и ожидалось. Однако когда я изменяю дату с помощью клавиатуры, свойство привязки не изменяется! Интересно, что когда я перемещаю фокус из DatePicker после того, как я изменил дату, затем возвращаюсь и возвращаюсь снова (ничего не меняя), исходное изменение устанавливается. Я предполагаю, что это как-то связано с обработкой внутреннего фокуса DatePicker с его TextBox, но я не понимаю, есть ли это и проблема с WPF или ReactivUI.
Любая идея?
Обновление 1
В качестве теста я напрямую назначил обработчик события DatePickers LostKeyboardFocus. Это событие срабатывает каждый раз, когда элемент управления теряет фокус. Однако ReactiveUI не улавливает первую потерю фокуса!