我在Windows窗体中托管WPF用户控件 在wpf用户控件中,我使用了来自wpfToolkit.extended
的时间戳如果我使用向上或向下键或只是在文本字段中输入时间,尽管我使用的是Updatesourcetrigger = propertychanged,但源不会更新。
当我在dropdrownlist中选择一个时间时,一切都按照它应该的方式工作。 这是工具包的命名空间。
xmlns:xctk="clr-namespace:Xceed.Wpf.Toolkit;assembly=WPFToolkit.Extended"
这是timepicker的xaml
<xctk:TimePicker Format="LongTime" TimeInterval="00:15:00.000" Value="{Binding Path=StartTime, UpdateSourceTrigger=PropertyChanged}" ></xctk:TimePicker>
如果我在WPFusercontrol外部单击,而不首先将焦点更改为wpf usercontrol中的另一个控件。绑定时间不会更新。
知道如何解决这个问题吗?
答案 0 :(得分:4)
找到解决此问题的方法: 我给了TimePicker一个名字(在这种情况下'tpFrom')然后我在TimePicker上使用了TextBoxBase.TextChanged事件。 这就是Xaml现在的样子:
<xctk:TimePicker Name="tpFrom" Format="LongTime" TextBoxBase.TextChanged="TimePicker_TextChanged" TimeInterval="00:15:00.000" Value="{Binding Path=StartTime, UpdateSourceTrigger=PropertyChanged}"></xctk:TimePicker>
在我们的eventhandler背后的代码中,我们将重点放在我们的时间选择器上。
private void TimePicker_TextChanged(object sender, TextChangedEventArgs e)
{
tpFrom.Focus();
}
现在,每当文本发生变化时,值也会发生变化,问题就解决了: - )
答案 1 :(得分:0)
TimePicker是否具有Text属性?如果是这样,请尝试绑定到它。
我认为这种行为可能会阻止您在键入时绑定到错误的日期时间。我猜想当焦点丢失时,它会尝试设置属性并进行错误检查。如果它在您输入时执行此操作,则会随时更改值(例如删除字符)。
在您输入时是否有特定的内容?