Two way percentage formatted binding in WPF

前端 未结 2 1361
盖世英雄少女心
盖世英雄少女心 2021-01-05 03:08

I have this textbox:


It correctly displays 0.05 as 5

2条回答
  •  情书的邮戳
    2021-01-05 03:36

    Adding to ChrisF's answer, the converter I ended up using (only for decimals):

    class DecimalPercentageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter,
                      System.Globalization.CultureInfo culture)
        {
            return value;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter,
                                  System.Globalization.CultureInfo culture)
        {
            if (targetType != typeof(decimal) || value == null)
                return value;
    
            string str = value.ToString();
    
            if (String.IsNullOrWhiteSpace(str))
                return 0M;
    
            str = str.TrimEnd(culture.NumberFormat.PercentSymbol.ToCharArray());
    
            decimal result = 0M;
            if (decimal.TryParse(str, out result)) {
                result /= 100;
            }
    
            return result;
        }
    }
    

提交回复
热议问题