以前の .Net ライフでは、現在の言語の通貨 (任意の通貨) をフォーマットする方法は、次のようにすることでした。
public string FormatCurrencyValue(string symbol, decimal val)
{
var format = (NumberFormatInfo)CultureInfo.CurrentUICulture.NumberFormat.Clone();
//overwrite the currency symbol with the one I want to display
format.CurrencySymbol = symbol;
//pass the format to ToString();
return val.ToString("{0:C2}", format);
}
これは、指定された通貨記号用に書式設定され、現在のカルチャ用に調整された、小数点以下の部分を含まない通貨値を返します (例: £50.00
for en-GB
but 50,00£
for ) fr-FR
。
Windows ストアで同じコードを実行すると、{50:C}
.
(かなりひどい) WinRT ドキュメントを見ると、CurrencyFormatter"£"
クラスがありますが、それは、パラメーターとしてコンストラクターを起動しようとして、 ArgumentException
(WinRT ドキュメントは非常に特殊です。例外に関する情報は実質的にありません)を取得した後でした。 ISO通貨記号が必要であることに気付きました(公平に言えば、パラメーター名は ですcurrencyCode
が、それでもそうです)。
今-私もそれらの1つを取得できますが、にCurrencyFormatter
は別の問題があり、通貨の書式設定には適していません-書式設定できるのはdouble
、long
およびulong
型のみです-decimal
オーバーロードはありません-状況によっては興味深い値エラーが発生する可能性があります.
では、WinRT.net で通貨を動的にフォーマットする方法は?