using System; using System.Globalization; using System.Windows.Data; namespace SWRIS.Converters { public class PercentageConverter : IValueConverter { /// /// 将值转换为百分比显示(例如:0.85 -> "85%") /// public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) return "0"; try { // 支持多种数值类型 double numericValue = System.Convert.ToDouble(value); // 检查是否有参数指定小数位数 int decimalPlaces = 0; if (parameter != null && int.TryParse(parameter.ToString(), out int places)) { decimalPlaces = places; } // 转换为百分比(乘以100) double percentage = numericValue * 100; // 格式化输出 string format = $"F{decimalPlaces}"; return percentage.ToString(format); } catch { return "0"; } } /// /// 将百分比字符串转换回数值(例如:"85%" -> 0.85) /// public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) return 0.0; string stringValue = value.ToString(); try { // 移除百分比符号和空格 stringValue = stringValue.Replace("%", "").Trim(); if (double.TryParse(stringValue, NumberStyles.Any, culture, out double result)) { // 转换回小数(除以100) return result / 100.0; } return 0.0; } catch { return 0.0; } } } }