Sto scrivendo un programma WPF e sto cercando di capire come formattare i dati in un TextBox attraverso un metodo ripetibile come uno stile o un modello. Ho un sacco di TextBox (95 per essere esatti) e ognuno è legato ai propri dati numerici che possono avere ciascuno la propria risoluzione definita. Ad esempio se i dati sono 99.123 con una risoluzione di 2 allora dovrebbe visualizzare 99.12. Allo stesso modo un valore di 99 e la risoluzione 3 dovrebbero essere visualizzati come 99.000 (non 99). C'è un modo per fare questo?Come formattare il numero di posizioni decimali in wpf usando stile/modello?
Edit: vorrei chiarire, ci sono 95 caselle di testo sulla schermata corrente su cui sto lavorando, ma voglio che ogni TextBox in tutte le varie schermate nel mio programma per visualizzare il numero corretto di cifre decimali. Ora che ci penso, alcuni di questi sono TextBox (come lo schermo su cui sto lavorando ora) e alcuni sono DataGrid o ListViews, ma se riesco a capire come farlo funzionare per i TextBox sono sicuro di poter capire anche per gli altri controlli.
Non c'è molto codice di condividere in questo caso, ma cercherò di renderlo più chiaro:
ho una vista del modello che contiene le seguenti proprietà (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
e in XAML ho:
<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 (soluzione mio): Si scopre che dopo aver camminato via fr dal computer per un po ', sono tornato per trovare una risposta semplice che mi stava fissando in faccia. Formatta i dati nel modello di vista!
Public ReadOnly Property Value As String
Get
Return (Strings.FormatNumber(Math.Round(_signal.DisplayValue, _signal.DisplayResolution), _signal.DisplayResolution))
End Get
End Property
utilizzare un 'IValueConverter'? Passa il valore effettivo e la risoluzione al convertitore e lascia che esegua l'arrotondamento per te al suo interno. È difficile suggerire un 'StringFormat' senza sapere come vengono generati esattamente questi' 'TextBox' '95. – Viv
Pubblica il codice corrente e XAML. Altrimenti sono tutte speculazioni e indovinate inutili. –
Ho aggiunto qualche altra informazione alla domanda che dovrebbe, se tutto va bene, renderla più chiara. – AXG1010