Проверка WPF не срабатывает при первом потерянном фокусе TextBox

Используйте RegexOptions.Singleline, он меняет значение. включить новые строки

Regex.Replace (content, searchText, replaceText, RegexOptions.Singleline);

13
задан Michael Myers 7 November 2012 в 02:12
поделиться

4 ответа

Если вы не против добавить немного логики в свой код, вы можете обработать фактическое событие LostFocus примерно так:

.xaml

<TextBox LostFocus="TextBox_LostFocus" ....

.xaml.cs

private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
     ((Control)sender).GetBindingExpression(TextBox.TextProperty).UpdateSource();
}
18
ответ дан 1 December 2019 в 20:02
поделиться

К сожалению, это дизайном. Проверка WPF только стреляет, если значение в управлении изменилось.

Невероятный, но верный. До сих пор проверка WPF является большой общеизвестной болью - это ужасно.

Одна из вещей, которые можно сделать, однако, получают выражение привязки от свойства управления и вручную вызывают проверки. Это сосет, но это работает.

8
ответ дан cranley 7 November 2012 в 02:12
поделиться

Я прошел ту же проблему и нашел крайний простой способ разрешить это: в событии Loaded Вашего окна, просто помещенного txtLastName. Текст = Строка. Пустой.Именно!! Так как свойство Вашего объекта изменилось (набор на пустую строку), увольнение проверки!

0
ответ дан 1 December 2019 в 20:02
поделиться

Взгляните на свойство ValidatesOnTargetUpdated ValidationRule. Он будет подтвержден при первой загрузке данных. Это хорошо, если вы пытаетесь поймать пустые или нулевые поля.

Вы должны обновить свой элемент привязки следующим образом:

<Binding 
    Source="{StaticResource CustomerKey}" 
    Path="LastName" 
    ValidatesOnExceptions="True" 
    ValidatesOnDataErrors="True" 
    UpdateSourceTrigger="LostFocus">
    <Binding.ValidationRules>
        <DataErrorValidationRule
            ValidatesOnTargetUpdated="True" />
    </Binding.ValidationRules>
</Binding>
5
ответ дан 1 December 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: