Binding.StringFormat 不遵守 CultureInfo.CurrentCulture
Binding.StringFormat doesn't adhere to CultureInfo.CurrentCulture
我在 windows phone.
上使用数据绑定时遇到奇怪的格式和货币问题
我检查了CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
,这是£
当我执行 string.Format("{0:C}", 30.30)
时,它也可以正确显示 £30.30
。
那么为什么下面的代码在使用数据绑定时会产生.30
?
Binding binding1 = new Binding(somePropertyName);
binding1.StringFormat = "{0:C}";
我不太熟悉 windows phone SDK,但在 WPF 中,绑定的 StringFormat 由 Language 属性 控制,而不是当前的线程文化信息。您可以在页面级别设置它,所有 children 将使用相同的语言。
这说明了语言 属性 如何独立于当前线程更改绑定的行为:
<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>
我在 windows phone.
上使用数据绑定时遇到奇怪的格式和货币问题我检查了CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
,这是£
当我执行 string.Format("{0:C}", 30.30)
时,它也可以正确显示 £30.30
。
那么为什么下面的代码在使用数据绑定时会产生.30
?
Binding binding1 = new Binding(somePropertyName);
binding1.StringFormat = "{0:C}";
我不太熟悉 windows phone SDK,但在 WPF 中,绑定的 StringFormat 由 Language 属性 控制,而不是当前的线程文化信息。您可以在页面级别设置它,所有 children 将使用相同的语言。
这说明了语言 属性 如何独立于当前线程更改绑定的行为:
<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>