C# WPF使用StringFormat格式化标签
我有一个WPF应用程序。我有一些标签和一些绑定到一些公共属性的数据网格。其中一些属性是数值 在datagrids中,我一直在使用下面的行来确保值只显示两位小数,这很有效。但是,当我使用下面的同一行作为标签时,它似乎对显示没有影响,因为数字显示在小数点后约9位。我不明白为什么它适用于datagrid而不适用于标签C# WPF使用StringFormat格式化标签,c#,wpf,C#,Wpf,我有一个WPF应用程序。我有一些标签和一些绑定到一些公共属性的数据网格。其中一些属性是数值 在datagrids中,我一直在使用下面的行来确保值只显示两位小数,这很有效。但是,当我使用下面的同一行作为标签时,它似乎对显示没有影响,因为数字显示在小数点后约9位。我不明白为什么它适用于datagrid而不适用于标签 StringFormat={}{0:0.##} <Label Grid.Row="3" Grid.Column="1" Content="{Binding Ob
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"/>
StringFormat={}{0:0.##
更新代码
<Label Grid.Row="3" Grid.Column="1"
Content="{Binding Obs.Tstat}" ContentStringFormat="{}{0:0.#}}"
HorizontalAlignment="Center" Foreground="{StaticResource brushLinFont}"
FontSize="13" FontWeight="Bold"/>
对于需要使用的标签:
原因: 标签的
Content
属性的类型为object
,StringFormat
仅在绑定属性的类型为String
时使用
如果您尝试使用TextBlock的
Text
属性编写代码,它将与StringFormat
配合使用,因为Text属性的类型为string。这只是一个快速添加,我想沿着这些行发布,以防其他人使用它。。。我的应用程序使用本地化,因为它支持多国,但我们也支持用户的系统设置。我们注意到ContentStringFormat
默认为您的UI区域性
这在我们的一个表单中导致了一个问题,当您指定ContentStringFormat
时,用户在windows设置中配置的特定于机器的小数位没有得到尊重
由于只采用字符串格式,而不使用您通常可以在绑定中指定的转换器区域性,这意味着,如果英语是我当前的UI区域性,则say:0:N
格式将只返回两位小数,即使我在windows设置中指定了5位小数
在我们的例子中,我们应用了一些绑定覆盖来解决这个问题,但主要是想添加这一额外的信息,以防其他人使用它;) 我明白为什么它可以在我的数据网格中工作。我已将代码更改为使用ContentStringFormat,但答案仍显示为许多小数位-我是否还缺少其他内容?在我的末尾,它工作完全正常,只显示小数点后的两位数字。绑定值是多少?Obs.Tstat是double类型,显示的值是1.3536。我已经编辑了我的帖子,以展示我所拥有的内容。您有一个ContentStringFormat中的exra大括号。它应该是
“{}{0:0.#}”
,而不是“{}{0:0.#}”
。移除最后一个额外的卷曲支架。
<Label Content="{Binding Obs.Tstat}" ContentStringFormat="{}{0:0.##}"/>