using System; using System.Globalization; using System.Windows.Data; namespace HandyControl.Tools.Converter { public class Long2FileSizeConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) return Properties.Langs.Lang.UnknownSize; if (value is long intValue) { if (intValue < 0) { return Properties.Langs.Lang.UnknownSize; } if (intValue < 1024) { return $"{intValue} B"; } if (intValue < 1048576) { return $"{intValue / 1024.0:0.00} KB"; } if (intValue < 1073741824) { return $"{intValue / 1048576.0:0.00} MB"; } if (intValue < 1099511627776) { return $"{intValue / 1073741824.0:0.00} GB"; } if (intValue < 1125899906842624) { return $"{intValue / 1099511627776.0:0.00} TB"; } if (intValue < 1152921504606847000) { return $"{intValue / 1125899906842624.0:0.00} PB"; } return Properties.Langs.Lang.TooLarge; } return Properties.Langs.Lang.Unknown; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } }