我有一个WPF应用程序。我有一些标签和一些数据绑定到一些公共财产。这些属性中的一些是数值。
在数据栏中,我一直在使用下面的一行来确保值只显示两个小数位,这是可行的。但是,当我使用下面的同一行作为标签时,它似乎对显示没有任何影响,因为数字显示到大约9位小数点。我不明白为什么它适用于数据集,而不是标签?
StringFormat={}{0:0.##}
<Label Grid.Row="3" Grid.Column="1"
Content="{Binding Obs.Tstat, StringFormat={}{0:0.#}}"
HorizontalAlignment="Center" Foreground="{StaticResource brushLinFont}"
FontSize="13" FontWeight="Bold"/>更新代码
<Label Grid.Row="3" Grid.Column="1"
Content="{Binding Obs.Tstat}" ContentStringFormat="{}{0:0.#}}"
HorizontalAlignment="Center" Foreground="{StaticResource brushLinFont}"
FontSize="13" FontWeight="Bold"/>发布于 2014-03-23 18:14:27
对于标签,您需要使用ContentStringFormat
<Label Content="{Binding Obs.Tstat}" ContentStringFormat="{}{0:0.##}"/>原因
Label的Content属性为object类型,只有在绑定属性为String类型时才使用StringFormat。
如果您使用TextBlock的Text属性尝试代码,它将在StringFormat中正常工作,因为Text属性的类型为string。
发布于 2017-07-18 20:38:46
只是简单的补充一下,我想按这条线发出去,以防其他人加入.我的应用程序使用本地化,因为它有多国支持,但我们也支持用户的系统设置。我们注意到ContentStringFormat默认为您的UI区域性。
这在我们的表单中引起了一个问题,在指定machine-specific时,用户在windows设置中配置的ContentStringFormat小数位不受尊重。
由于ContentPresenter只是采用字符串格式,而没有通常可以在绑定中指定的转换器区域性,这意味着,如果英语是我当前的UI区域性,那么0:N的格式只会返回两个小数位,即使我在窗口设置中指定了5个小数。
在我们的例子中,我们应用了一些绑定重写来解决这个问题,但主要是想添加这个额外的信息,以防其他人进入;)
https://stackoverflow.com/questions/22594958
复制相似问题