Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF使用StringFormat格式化标签_C#_Wpf - Fatal编程技术网

C# WPF使用StringFormat格式化标签

C# WPF使用StringFormat格式化标签,c#,wpf,C#,Wpf,我有一个WPF应用程序。我有一些标签和一些绑定到一些公共属性的数据网格。其中一些属性是数值 在datagrids中,我一直在使用下面的行来确保值只显示两位小数,这很有效。但是,当我使用下面的同一行作为标签时,它似乎对显示没有影响,因为数字显示在小数点后约9位。我不明白为什么它适用于datagrid而不适用于标签 StringFormat={}{0:0.##} <Label Grid.Row="3" Grid.Column="1" Content="{Binding Ob

我有一个WPF应用程序。我有一些标签和一些绑定到一些公共属性的数据网格。其中一些属性是数值

在datagrids中,我一直在使用下面的行来确保值只显示两位小数,这很有效。但是,当我使用下面的同一行作为标签时,它似乎对显示没有影响,因为数字显示在小数点后约9位。我不明白为什么它适用于datagrid而不适用于标签

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.##}"/>