2015-06-09 67 views
3

在Windows Phone上使用數據綁定時,我遇到了貨幣問題的奇怪格式。Binding.StringFormat不符合CultureInfo.CurrentCulture

我檢查了CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol這是£

當我做string.Format("{0:C}", 30.30)它會顯示正確也£30.30

那麼爲什麼下面的代碼在使用數據綁定時產生$30.30

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

回答

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>