在Windows手机上使用数据绑定时,我遇到了一种带有货币问题的奇怪格式。
我已检查CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
,这是£
当我string.Format("{0:C}", 30.30)
时,£30.30
也会正确显示。
那么为什么以下代码在使用数据绑定时会生成$30.30
?
Binding binding1 = new Binding(somePropertyName);
binding1.StringFormat = "{0:C}";
答案 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>