C# Binding.StringFormat不';t坚持文化信息。当前文化

C# Binding.StringFormat不';t坚持文化信息。当前文化,c#,windows-phone-8,C#,Windows Phone 8,在windows phone上使用数据绑定时,我遇到了一个奇怪的格式和货币问题 我已经检查了文化信息.CurrentCulture.NumberFormat.CurrencySymbol,这是 当我执行string.Format(“{0:C}”,30.30)时,它也正确地显示为.30 那么,在使用数据绑定时,为什么下面的代码会产生$30.30 Binding binding1 = new Binding(somePropertyName); binding1.StringFormat = "{0

在windows phone上使用数据绑定时,我遇到了一个奇怪的格式和货币问题

我已经检查了
文化信息.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属性如何独立于当前线程更改绑定的行为:

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