Lorsque j'essaie de saisir un DOT ou une COMMA dans une zone de texte, par exemple 1.02
ou 83,33
, la zone de texte m'empêche de saisir cette valeur (et l'entrée devient rouge). La zone de texte est liée à une propriété float. Pourquoi?
J'ai lié une zone de texte à une propriété float Power
d'une classe implémentant INotifyPropertyChanged
.
private float _power;
public float Power
{
get { return _power; }
set
{
_power = value;
OnPropertyChanged("Power");
}
}
En Xaml
<TextBox Name="txtPower" Height="23" TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>
Je n'ai pas de validation personnalisée du tout pour le moment.
Également essayé décimal mais cela ne fonctionne pas non plus. Pour les ficelles tout fonctionne bien.
Essayez d’ajouter une définition StringFormat à la liaison .
<TextBox Name="txtPower" Height="23"
TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,StringFormat=N2}"></TextBox>
Si vous avez .NET 4.5 ou plus récent, essayez
System.Windows.FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false;
Voir Le blog de Sebastian Lux .
résoudre les problèmes de points et de virgules dans la liaison de zone de texte à décimal ou à virgule flottante
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>