2012-04-25 8 views
0

通貨番号を数百万の範囲(たとえば275983.35)にして2.7と表示する文字列書式を作成しようとしています。これは、凡例のスケーリング番号として使用するためのものです。.Net String Formatミリ秒単位の通貨値を表示

私が使用しているコントロールは、この{}{0:my string format}

のような文字列フォーマットを必要と私は{}{0:0,,.0}を使用して2.7を表示するディスプレイを得るために管理しているが、これは通貨記号が表示されません。どのように通貨記号を表示するには、単一通貨記号を次のようにハードコーディングする必要はありません:{}{0;$0,,.0}

+0

http://www.codeproject.com/Articles/11531/Money-DataType - 実際には素晴らしいデータ型で、私はそれで多くの成功を収めました! –

答えて

0

最も簡単な解決策は、数値を1,000,000で除算し、標準通貨書式を使用して数値を表示することです。これは通貨の現地化を行いますが、ではなくであり、これが何百万ドル/ポンド/ユーロであったことを示しています。

もっと良い解決策は、100万分の1の分割を行い、正しい通貨記号を選択し、それが何百万ということを示すために「m」(またはあなたが決定した記号)を追加するカスタムコンバータを書くことでしょう。 XAMLで次に

public class MillionsConverter : IValueConverter 
{ 
    #region IValueConverter Members 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return (value/1000000M).ToString("C2") + " m"; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 

<ResourceDictionary> 
    <Converters:MillionsConverter x:Key="MillionsConverter " /> 
</ResourceDictionary> 

<TextBlock Text="{Binding Value, Converter={StaticResource MillionsConverter}" /> 

この意志出力:

$ 2.7メートル

明らかに、あなたは正確に取得するには、コンバータを微調整する必要がありますあなたが望むフォーマット。

関連する問題