Saya menulis program WPF dan saya mencoba mencari cara untuk memformat data dalam TextBox melalui beberapa metode berulang seperti gaya atau template. Saya memiliki banyak TextBox (95 tepatnya) dan masing-masing terikat pada data numeriknya sendiri yang masing-masing dapat memiliki resolusi sendiri. Misal jika datanya 99.123 dengan resolusi 2 maka seharusnya menampilkan 99.12. Demikian pula nilai data 99 dan resolusi 3 harus ditampilkan sebagai 99.000 (bukan 99). Apakah ada cara untuk melakukan ini?
Sunting: Saya harus menjelaskan, ada 95 Kotak Teks di layar saat ini yang saya kerjakan, tetapi saya ingin setiap Kotak Teks di berbagai layar dalam program saya menampilkan jumlah tempat desimal yang benar. Sekarang saya memikirkannya, beberapa di antaranya adalah TextBoxes (seperti layar yang sedang saya kerjakan sekarang) dan beberapa adalah DataGrids atau ListView, tetapi jika saya dapat mengetahui cara membuatnya berfungsi untuk TextBox, saya yakin saya bisa memahami itu untuk kontrol lainnya juga.
Tidak banyak kode untuk dibagikan dalam kasus ini, tetapi saya akan mencoba membuatnya lebih jelas:
Saya memiliki Model Tampilan yang berisi properti berikut (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
dan di XAML saya punya:
<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 (solusi saya): Ternyata setelah meninggalkan komputer beberapa lama, saya kembali untuk menemukan jawaban sederhana yang menatap wajah saya. Format data dalam model tampilan!
Public ReadOnly Property Value As String
Get
Return (Strings.FormatNumber(Math.Round(_signal.DisplayValue, _signal.DisplayResolution), _signal.DisplayResolution))
End Get
End Property
IValueConverter
? Berikan nilai aktual dan resolusi ke konverter dan biarkan konverter melakukan pembulatan untuk Anda di dalamnya. Sulit untuk menyarankanStringFormat
tanpa mengetahui bagaimana tepatnya 95TextBox
ini dihasilkan.