Свяжите текстовое поле с плавающей запятой. Невозможно ввести точку/запятую
Когда я пытаюсь ввести DOT или COMMA в текстовое поле, например 1.02
или 83,33
, текстовое поле не позволяет мне вводить такое значение (и вход становится красным). Текстовое поле привязано к свойству float. Почему?
Я привязал текстовое поле к свойству float Power
класса, реализующего INotifyPropertyChanged
.
private float _power;
public float Power
{
get { return _power; }
set
{
_power = value;
OnPropertyChanged("Power");
}
}
В Xaml
<TextBox Name="txtPower" Height="23" TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>
У меня нет пользовательской проверки сейчас.
Также попытался десятичный, но он тоже не работает. Для струны все работает нормально.
Ответы
Ответ 1
Попробуйте добавить определение привязки StringFormat к привязке.
Например:
<TextBox Name="txtPower" Height="23"
TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,StringFormat=N2}"></TextBox>
Ответ 2
Если у вас .NET 4.5 или новее, попробуйте
System.Windows.FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false;
Смотрите блог Себастьяна Люкс.
Ответ 3
для исправления проблемы с точкой и запятой в привязке текстового поля к десятичному или плавающему
1- UpdateSourceTrigger = LostFocus
2- add string format StringFormat={}{0:#.##} to escape unneeded zeros
<TextBox Name="txtPower" Height="23"
TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay,
UpdateSourceTrigger=LostFocus ,StringFormat={}{0:#.##}}"></TextBox>