我有一个绑定到属性的文本框。该属性不断从计时器更新。我正在尝试做的是,当我正在文本框中键入内容时,文本框应该停止从属性更新自己。有没有办法做到这一点?
谢谢!
答案 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。你应该可以很容易地修改它来做你需要的。