Je suis en train d'écrire un programme WPF et j'essaie de trouver un moyen de formater les données d'une TextBox grâce à une méthode reproductible comme un style ou un modèle. J'ai beaucoup de TextBox (95 pour être exact) et chacun est lié à ses propres données numériques qui peuvent avoir leur propre résolution définie. Par exemple, si la donnée est 99.123 avec une résolution de 2, elle doit afficher 99.12. De même, une valeur de données de 99 et une résolution de 3 devraient être affichées comme 99.000 (et non 99). Existe-t-il un moyen de faire cela ?
Edita: Je dois préciser qu'il y a 95 boîtes de texte sur l'écran sur lequel je travaille actuellement, mais je veux que chaque boîte de texte des différents écrans de mon programme affiche le nombre correct de décimales. Maintenant que j'y pense, certains de ces écrans sont des TextBox (comme l'écran sur lequel je travaille actuellement) et d'autres sont des DataGrids ou des ListViews, mais si je peux trouver comment faire fonctionner les TextBox, je suis sûr que je peux le faire pour les autres contrôles également.
Il n'y a pas beaucoup de code à partager dans ce cas mais je vais essayer de le rendre plus clair :
J'ai un modèle de vue qui contient les propriétés suivantes (vb.net) :
Public ReadOnly Property Resolution As Integer
Get
Return _signal.DisplayResolution
End Get
End Property
Public ReadOnly Property Value As Single
Get
Return Math.Round(_signal.DisplayValue, Resolution)
End Get
End Property
et dans le XAML j'ai :
<UserControl.Resources>
<vm:SignalViewModel x:Key="Signal" SignalPath="SomeSignal"/>
</UserControl.Resources>
<TextBox Grid.Column="3" IsEnabled="False" Text="{Binding Path=Value, Source={StaticResource Signal}, Mode=OneWay}" />
EDIT2 (ma solution) : Il se trouve qu'après m'être éloigné de l'ordinateur pendant un certain temps, je suis revenu pour trouver une réponse simple qui me sautait aux yeux. Formatez les données dans le modèle de vue !
Public ReadOnly Property Value As String
Get
Return (Strings.FormatNumber(Math.Round(_signal.DisplayValue, _signal.DisplayResolution), _signal.DisplayResolution))
End Get
End Property