Silverlight 4.0 TextBox数据字段始终更新使用验证失败的文本框更改的文本的源绑定
我有一个文本框,在输入端有一个双向绑定。它的设置是,如果它为空,则验证失败,并显示工具提示,说明它不能为空。我的问题是,因为验证失败,所以每次文本框更改时(即每次按键),它都会尝试更新绑定。我不希望它每次按键都更新源代码。我在Silverlight 4.0 DataField.cs工具包中将其缩小为以下代码:Silverlight 4.0 TextBox数据字段始终更新使用验证失败的文本框更改的文本的源绑定,silverlight-4.0,silverlight-toolkit,Silverlight 4.0,Silverlight Toolkit,我有一个文本框,在输入端有一个双向绑定。它的设置是,如果它为空,则验证失败,并显示工具提示,说明它不能为空。我的问题是,因为验证失败,所以每次文本框更改时(即每次按键),它都会尝试更新绑定。我不希望它每次按键都更新源代码。我在Silverlight 4.0 DataField.cs工具包中将其缩小为以下代码: private void OnTextBoxTextChanged(object sender, TextChangedEventArgs e) { TextBox textBox
private void OnTextBoxTextChanged(object sender, TextChangedEventArgs e)
{
TextBox textBox = sender as TextBox;
if (textBox != null && (ValidationUtil.ElementHasErrors(textBox) || !this._lostFocusFired[textBox]))
{
this._lostFocusFired[textBox] = false;
ValidationUtil.UpdateSourceOnElementBindings(textBox);
}
}
由于元素有错误,它将落入ValidationUtil.UpdateSourceElementBindings()中。有没有我可以阻止它这样做?我认为您需要帮助重新安排您的条件,以便更准确地表达您的意图,但我不清楚现有代码的结果会是什么。这就是为什么我们要求一个完整的、可运行的(但最小的!)测试用例。但是,如果您只是因为验证失败而不想进行更新,则应该这样做:
private void OnTextBoxTextChanged(object sender, TextChangedEventArgs e)
{
TextBox textBox = sender as TextBox;
if (textBox != null && !this._lostFocusFired[textBox]))
{
ValidationUtil.UpdateSourceOnElementBindings(textBox);
}
}
您可以验证输入,并在if语句之外对结果作出反应