Binding.StringFormat不遵守CultureInfo.CurrentCulture

时间:2015-06-09 09:04:50

标签: c# windows-phone-8

在Windows手机上使用数据绑定时,我遇到了一种带有货币问题的奇怪格式。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

<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>