2012-04-25 10 views
0
.

. Я пытаюсь написать строковый формат, который принимает номера валют в диапазоне миллионов, например 275983,35, а затем отображает это как 2.7. Это используется для масштабирования чисел в легенде.. Формат строки. Отображение валюты. Значение валюты в миллионах.

Контроль Я использую требует строковые форматы, как этот {}{0:my string format}

мне удалось получить дисплей, чтобы показать 2.7 с помощью {}{0:0,,.0}, но это не отображает символ валюты. Как я могу получить символ валюты для отображения без жесткого кодирования символа единой валюты, например: {}{0;$0,,.0}.

+0

http://www.codeproject.com/Articles/11531/Money-DataType - на самом деле это отличный DataType, у меня был большой успех! –

ответ

0

Простейшим решением было бы разделить число на 1,000,000, а затем отобразить это, используя стандартное форматирование валюты. Это даст вам локализацию валюты - но не и указание, что это были миллионы долларов/фунты/евро.

Лучшим решением будет написать пользовательский конвертер, который будет делить на миллион, выбрать правильный символ валюты, а затем добавить «m» (или любой другой символ, который вы решите), чтобы указать, что это миллионы.

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 
} 

Тогда в XAML:

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

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

Этот выход будет:

$ 2.7m

Очевидно, что вам нужно настроить конвертер, чтобы получить точное формат, который вы хотите.

Смежные вопросы