2016-12-17 6 views
2

通貨価値のある文字列を書式設定して遊んでいるうちに、WPFの表示方法に違いがあることに気付きました。通貨表示の相違点

decimalの値をXAMLにフォーマットすると、WPFはそれを5,99 €と表示します。

<TextBlock Text="{Binding Total, StringFormat={}{0:C}}"/> 
return 5.99m; 

コードの後ろに書式を設定すると、€ 5,99と表示されます。

<TextBlock Text="{Binding TotalString}"/> 
return string.Format("{0:C}", 5.99m); 

これはバグですか?

私はWindows版を取得しました。ターゲットとする.NETバージョンは4.5.2です。バインディングのStringFormatを設定する場合

+0

どの国ですか?私のドイツ語版Windows 10では、 'string.Format'は" 5,99€ " – Clemens

+0

@Clemens Belgiumを返します。窓の私の設定も正しいので、私は思っている問題ではありません。 – DeMama

答えて

1

は、WPFはCultureInfo.CurrentCultureを使用していますが、デフォルトでわずかen-US、または値が、あなたは、要素の(または親の)Languageプロパティを設定することにより、指定されていません。詳細は、this questionを参照してください。

一方、string.FormatCultureInfo.CurrentCultureを使用します。また、通貨の書式設定に関して正確にどのように動作するかは、ユーザーが設定することができます。

enter image description here

だからあなただけの書式設定を達成するために設定することを変更される可能性があります:通貨パターンは、レジストリ値HKEY_CURRENT_USER\Control Panel\International\iCurrencyによって制御され、(申し訳ありません、それはドイツ語です)コントロールパネルで設定することができます例えば

あなたがStringFormatから得た動作