Timepicker Updatesourcetrigger = propertychanged不会更改值

时间:2013-02-15 13:10:46

标签: wpf data-binding wpftoolkit

我在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中的另一个控件。绑定时间不会更新。

知道如何解决这个问题吗?

2 个答案:

答案 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属性?如果是这样,请尝试绑定到它。

我认为这种行为可能会阻止您在键入时绑定到错误的日期时间。我猜想当焦点丢失时,它会尝试设置属性并进行错误检查。如果它在您输入时执行此操作,则会随时更改值(例如删除字符)。

在您输入时是否有特定的内容?