TextBox DataField всегда обновляет привязки источника к тексту, измененному с помощью текстового поля, которое не проходит проверку - PullRequest
1 голос
/ 15 февраля 2012

У меня есть TextBox с двусторонней привязкой на входе. Он настроен так, что он не проходит проверку, если он пустой, и отображает всплывающую подсказку о том, что он не может быть пустым. Моя проблема заключается в том, что, поскольку он не проходит проверку, он пытается обновлять привязки при каждом изменении текстового поля (т. Е. При каждом нажатии клавиши). Я не хочу обновлять источник при каждом нажатии клавиши. Я сузил его до этого кода в наборе инструментов Silverlight 4.0 для DataField.cs:

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.UpdateSourceOnElementBindings (), потому что элемент имеет ошибки. Могу ли я в любом случае помешать этому?

1 Ответ

0 голосов
/ 16 мая 2015

Я думаю, вам нужна помощь в перестройке ваших условий, чтобы более точно выразить свои намерения, но я не совсем понимаю, каков будет результат существующего кода.Вот почему мы запрашиваем полный, работоспособный (но минимальный!) Тестовый набор.Однако, если вы просто не хотите обновляться из-за неудачной проверки, это должно сработать:

private void OnTextBoxTextChanged(object sender, TextChangedEventArgs e)
{
    TextBox textBox = sender as TextBox;

    if (textBox != null && !this._lostFocusFired[textBox]))
    {
        ValidationUtil.UpdateSourceOnElementBindings(textBox);
    }
}

Вы можете проверить ввод и отреагировать на результат вне оператора if.

...