手动编辑绑定到不断更新的属性的文本框的问题

时间:2009-07-10 17:39:40

标签: c# wpf data-binding binding

我有一个绑定到属性的文本框。该属性不断从计时器更新。我正在尝试做的是,当我正在文本框中键入内容时,文本框应该停止从属性更新自己。有没有办法做到这一点?

谢谢!

4 个答案:

答案 0 :(得分:2)

我不是WPF或数据绑定专家,所以可能有更好的方法,但我会说你必须处理GotFocus和LostFocus事件,并在这些事件处理程序中添加/删除数据绑定。

答案 1 :(得分:1)

我会按以下顺序执行某些操作:

  public void Timer_Tick(object sender,EventArgs eArgs)
  {
    if(!Textbox.GotFocus())
    {
          // Regular updating of textbox  
    }
  }

答案 2 :(得分:1)

如果您有权访问Binding对象,则可以将其UpdateSourceTrigger属性设置为Explicit,这将阻止自动更新。

修改

也许是这样的

UpdateSourceTrigger old;

protected override void OnGotFocus(RoutedEventArgs e)
{
    Binding b = BindingOperations.GetBinding(textBox1, TextBox.TextProperty);
    old = b.UpdateSourceTrigger;
    b.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
}

protected override void OnLostFocus(RoutedEventArgs e)
{
    Binding b = BindingOperations.GetBinding(textBox1, TextBox.TextProperty);
    b.UpdateSourceTrigger = old;
}

当然,这是简短形式,没有任何空检查等。

答案 3 :(得分:0)

您可能会发现之前的StackOverflow问题很有用:.NET --- Textbox control - wait till user is done typing。你应该可以很容易地修改它来做你需要的。