c# - Binding.StringFormat 不遵守 CultureInfo.CurrentCulture

标签 c# windows-phone-8

<分区>

在 Windows Phone 上使用数据绑定(bind)时,我遇到了一个奇怪的格式和货币问题。

我检查了 CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol,这是 £

当我执行 string.Format("{0:C}", 30.30) 时,它也会正确显示 £30.30

那么为什么以下代码在使用数据绑定(bind)时会产生 $30.30

Binding binding1 = new Binding(somePropertyName);
binding1.StringFormat = "{0:C}";

最佳答案

我不太熟悉 Windows Phone SDK,但在 WPF 中,绑定(bind)的 StringFormat 由 Language 控制属性,而不是当前的线程文化信息。您可以在页面级别设置它,所有 child 将使用相同的语言。

这说明了语言属性如何独立于当前线程改变绑定(bind)的行为:

<StackPanel Language="nb-NO">
    <Slider Name="slider" />
    <TextBlock Text="{Binding ElementName=slider, Path=Value, StringFormat=C2}" />
    <TextBlock Language="en-US" Text="{Binding ElementName=slider, Path=Value, StringFormat=C2}" />
</StackPanel>

关于c# - Binding.StringFormat 不遵守 CultureInfo.CurrentCulture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30727575/

相关文章:

c# - 集合的一个字段上的模式匹配

c# - 在 Windows Phone 中启动应用程序时不显示 Toast

html - 如何在 wp8 webBrowser 控件 Iframe 中自动播放 Youtube 视频

internet-explorer - 如何使用 Windows Phone 的麦克风在网页中录制音频?

c# - Unity MVC 默认解析类型吗?

c# - 从另一层创建对象

c# - Windows Phone 8 的计时器

c# - 如何获得Windows Phone 8键盘建议栏的高度?

c# - double.parse 返回精度差异

c# - 如何使用相同的 MVC Controller 方法处理数组或单个对象?