带有WPF日期选择器的ReactiveUI

带有WPF日期选择器的ReactiveUI,wpf,reactiveui,Wpf,Reactiveui,我无法使用ReactiveUI使WPF日期选择器的绑定按预期工作。 绑定是在如下代码中设置的: this.Bind(this.ViewModel, x => x.MyDate, x => x.DPMyDate.SelectedDate, DPMyDate.Events().LostKeyboardFocus).DisposeWith(disposables); <DatePicker Name="DPMyDate"></DatePicker> 在XAML文

我无法使用ReactiveUI使WPF日期选择器的绑定按预期工作。 绑定是在如下代码中设置的:

this.Bind(this.ViewModel, x => x.MyDate, x => x.DPMyDate.SelectedDate, DPMyDate.Events().LostKeyboardFocus).DisposeWith(disposables);
<DatePicker Name="DPMyDate"></DatePicker>
在XAML文件中,它如下所示:

this.Bind(this.ViewModel, x => x.MyDate, x => x.DPMyDate.SelectedDate, DPMyDate.Events().LostKeyboardFocus).DisposeWith(disposables);
<DatePicker Name="DPMyDate"></DatePicker>
通过日历更改日期按预期工作。但是,当我用键盘更改日期时,绑定属性不会更改! 有趣的是,当我在更改日期后将焦点移出日期选择器,然后再移入和移出(不做任何更改)时,原来的更改就被设置好了。我猜这与DatePicker的文本框的内部焦点处理有关,但我不知道它是WPF还是ReactivUI的问题

有什么想法吗

更新1


作为测试,我直接为DatePickers LostKeyboardFocus事件分配了一个处理程序。每次控件失去焦点时,似乎都会触发此事件。然而,ReactiveUI并没有拾取第一个焦点丢失

很抱歉在我发布40分钟后,现在回答了我自己的问题。但一分钟前,我发现绑定到LostKeyboardFocus对于日期选择器来说是错误的。你应该绑定到SelectedDateChanged

在LostKeyboard中,focus SelectedDate仍具有其原始值,这就是为什么在第一次焦点丢失时,ReactiveUI不能正确更改属性的原因。在进一步关注损失时,它总是落后一个变化

不知怎么的,我觉得这应该和文本框一样,在文本框中,只有当文本框失去焦点时,你才想触发一个改变,但是DatePicker在这里很特别