Эквивалент события WinForms TextBox.Validating в WPF - PullRequest
5 голосов
/ 11 сентября 2009

В WinForms я мог обрабатывать событие Validated, чтобы что-то делать после того, как пользователь изменил текст в TextBox. В отличие от TextChanged, Validated не срабатывает при каждом изменении символа; он срабатывает только когда пользователь закончил.

Есть ли в WPF что-нибудь, что я могу использовать для получения того же результата, событие возникает только после того, как пользователь сделал изменил текст?

Ответы [ 4 ]

3 голосов
/ 11 сентября 2009

LostFocus сработает, когда пользователь перейдет из вашего текстового поля на любой другой элемент управления.

2 голосов
/ 28 марта 2015

LostFocus не является эквивалентом Validate. Это создает много проблем, когда у вас есть несколько текстовых полей на одном экране, и у каждого текстового поля есть некоторая логика, написанная в Validate. В валидации события вы можете легко управлять фокусом, но не так легко в LostFocus.

2 голосов
/ 24 ноября 2010

Вроде нет родного решения. Событие LostFocus - хорошая идея. Но когда пользователь нажимает Enter, он хочет, чтобы TextBox подтвердил изменение. Итак, вот мое предложение: используйте событие LostFocus и событие KeyDown, когда клавиша - Enter.

private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
    // code to lauch after validation
}

private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        // call the LostFocus event to validate the TextBox
        ((TextBox)sender).RaiseEvent(new RoutedEventArgs(TextBox.LostFocusEvent));
    }
}
0 голосов
/ 12 сентября 2009

Вы также можете попробовать Binding.ValidationRules

Документально подтверждено по адресу: http://msdn.microsoft.com/en-us/library/system.windows.data.binding.validationrules.aspx

Вот статья для начала:

Как реализовать проверки привязки:

http://msdn.microsoft.com/en-us/library/ms753962.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...