首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用StringFormat格式化标签

用StringFormat格式化标签
EN

Stack Overflow用户
提问于 2014-03-23 18:13:02
回答 2查看 18.3K关注 0票数 10

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

在数据栏中,我一直在使用下面的一行来确保值只显示两个小数位,这是可行的。但是,当我使用下面的同一行作为标签时,它似乎对显示没有任何影响,因为数字显示到大约9位小数点。我不明白为什么它适用于数据集,而不是标签?

代码语言:javascript
复制
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"/>

更新代码

代码语言:javascript
复制
 <Label Grid.Row="3" Grid.Column="1"
        Content="{Binding Obs.Tstat}" ContentStringFormat="{}{0:0.#}}" 
        HorizontalAlignment="Center" Foreground="{StaticResource brushLinFont}" 
        FontSize="13" FontWeight="Bold"/>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-23 18:14:27

对于标签,您需要使用ContentStringFormat

代码语言:javascript
复制
<Label Content="{Binding Obs.Tstat}" ContentStringFormat="{}{0:0.##}"/>

原因

Label的Content属性为object类型,只有在绑定属性为String类型时才使用StringFormat

如果您使用TextBlock的Text属性尝试代码,它将在StringFormat中正常工作,因为Text属性的类型为string。

票数 33
EN

Stack Overflow用户

发布于 2017-07-18 20:38:46

只是简单的补充一下,我想按这条线发出去,以防其他人加入.我的应用程序使用本地化,因为它有多国支持,但我们也支持用户的系统设置。我们注意到ContentStringFormat默认为您的UI区域性。

这在我们的表单中引起了一个问题,在指定machine-specific时,用户在windows设置中配置的ContentStringFormat小数位不受尊重。

由于ContentPresenter只是采用字符串格式,而没有通常可以在绑定中指定的转换器区域性,这意味着,如果英语是我当前的UI区域性,那么0:N的格式只会返回两个小数位,即使我在窗口设置中指定了5个小数。

在我们的例子中,我们应用了一些绑定重写来解决这个问题,但主要是想添加这个额外的信息,以防其他人进入;)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22594958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档