Liez textbox à float value. Impossible d'entrer point / virgule
quand j'essaie d'entrer un point ou une virgule dans une zone de texte, par exemple 1.02
ou 83,33
la boîte de texte m'empêche d'entrer une telle valeur (et l'entrée devient rouge). La textbox est liée à une propriété float. Pourquoi?
j'ai relié une boîte 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");
}
}
Dans Le Code Xaml
<TextBox Name="txtPower" Height="23" TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>
Je n'ai aucune validation personnalisée pour le moment.
Aussi essayé décimal, mais il ne fonctionne pas non plus. Pour chaîne tout fonctionne bien.
3 réponses
essayez d'ajouter une définition StringFormat à la reliure. Comme ceci:
<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.
pour fixer le point et la virgule question dans la zone de texte de liaison à la décimale ou float
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>