Используйте RegexOptions.Singleline, он меняет значение. включить новые строки
Regex.Replace (content, searchText, replaceText, RegexOptions.Singleline);
Если вы не против добавить немного логики в свой код, вы можете обработать фактическое событие LostFocus примерно так:
.xaml
<TextBox LostFocus="TextBox_LostFocus" ....
.xaml.cs
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
((Control)sender).GetBindingExpression(TextBox.TextProperty).UpdateSource();
}
К сожалению, это дизайном. Проверка WPF только стреляет, если значение в управлении изменилось.
Невероятный, но верный. До сих пор проверка WPF является большой общеизвестной болью - это ужасно.
Одна из вещей, которые можно сделать, однако, получают выражение привязки от свойства управления и вручную вызывают проверки. Это сосет, но это работает.
Я прошел ту же проблему и нашел крайний простой способ разрешить это: в событии Loaded Вашего окна, просто помещенного txtLastName. Текст = Строка. Пустой.Именно!! Так как свойство Вашего объекта изменилось (набор на пустую строку), увольнение проверки!
Взгляните на свойство ValidatesOnTargetUpdated ValidationRule. Он будет подтвержден при первой загрузке данных. Это хорошо, если вы пытаетесь поймать пустые или нулевые поля.
Вы должны обновить свой элемент привязки следующим образом:
<Binding
Source="{StaticResource CustomerKey}"
Path="LastName"
ValidatesOnExceptions="True"
ValidatesOnDataErrors="True"
UpdateSourceTrigger="LostFocus">
<Binding.ValidationRules>
<DataErrorValidationRule
ValidatesOnTargetUpdated="True" />
</Binding.ValidationRules>
</Binding>