4

我在 Windows 窗体中托管 WPF 用户控件在 wpf 用户控件中,我正在使用来自 wpfToolkit.extended 的时间选择器

如果我使用向上键或向下键,或者只是在文本字段中输入时间,则源不会更新,尽管我使用的是 Updatesourcetrigger = propertychanged。

当我在下拉列表中选择一个时间时,一切都会按应有的方式进行。这是工具包的命名空间。

xmlns:xctk="clr-namespace:Xceed.Wpf.Toolkit;assembly=WPFToolkit.Extended"

这是时间选择器的 xaml

  <xctk:TimePicker  Format="LongTime" TimeInterval="00:15:00.000" Value="{Binding Path=StartTime, UpdateSourceTrigger=PropertyChanged}" ></xctk:TimePicker>

如果我在 WPFusercontrol 外部单击而不首先将焦点更改到 wpf usercontrol 中的另一个控件。绑定时间不更新。

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

4

2 回答 2

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>

在我们的事件处理程序后面的代码中,我们将重点放在我们的时间选择器上。

  private void TimePicker_TextChanged(object sender, TextChangedEventArgs e)
    {
        tpFrom.Focus();            
    }

现在每次文本改变时,值也会改变,问题就解决了:-)

于 2013-02-15T15:13:44.700 回答
0

TimePicker 是否有 Text 属性?如果是这样,请尝试绑定到那个。

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

在您键入时,您是否正在尝试做一些特定的事情?

于 2013-02-15T13:33:38.943 回答