Я только что обновил наше приложение wpf с 3.5sp1 до 4.0.
Приведенный ниже код мы используем для привязки текстового поля к базовой модели представления. Текстовое поле можно редактировать.
В 3.5sp1 форматирование будет происходить только изначально. Поэтому, когда текстовое поле было загружено и привязано к значению 4000, форматирование изменит его на 4000. Если пользователь редактировал это значение, форматирование не происходило.
В 4.0 форматирование происходит по мере изменения значения (т. Е. Пока пользователь вводит новое значение). Хотя в теории это звучит нормально, на самом деле это катастрофа. Курсор повсюду. Его нельзя использовать.
Теперь, мы могли бы изменить UpdateSourceTrigger на «LostFocus», но это создает новые проблемы с данными, не проверяемыми в определенных сценариях.
Есть ли способ вернуть прежнее поведение 3.5sp1?
Обновление 1
Использование Converter по-прежнему вызывает такое же поведение:
public class DecimalConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
return ((decimal)value).ToString("#,##0;(#,##0)");
return string.Empty;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
и измененный XAML:
Обновление 2
Подобно этой статье подключения .