最佳答案
我正在写一个 WPF 程序,我试图找出一种方法,通过一些可重复的方法,如样式或模板格式化数据在一个文本框。我有很多文本框(确切地说是95个) ,每个文本框都绑定到自己的数字数据,每个数字数据都可以定义自己的分辨率。例如,如果数据是99.123,分辨率为2,那么它应该显示99.12。类似地,数据值99和分辨率3应该显示为99.000(而不是99)。有办法吗?
编辑: 我应该澄清一下,我正在处理的当前屏幕上有95个 TextBox,但是我希望程序中各个屏幕上的每个 TextBox 都能显示正确的小数位数。现在我想想,其中一些是 TextBoxes (就像我现在正在处理的屏幕) ,一些是 DataGrids 或 ListView,但是如果我能弄清楚如何让它在 TextBoxes 上工作,我相信我也能弄清楚其他控件的工作原理。
在这种情况下没有太多的代码可以共享,但是我会尝试让它更加清晰:
我有一个视图模型,它包含以下属性(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
在 XAML 中,我有:
<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}" />
编辑2(我的解决方案) : 事实证明,在离开电脑一段时间后,我回来找到了一个简单的答案,这个答案就摆在我面前。格式化视图模型中的数据!
Public ReadOnly Property Value As String
Get
Return (Strings.FormatNumber(Math.Round(_signal.DisplayValue, _signal.DisplayResolution), _signal.DisplayResolution))
End Get
End Property