如果你只使用这样的字符串格式,{0:F2}%
你将不得不忍受像 4.23 这样的数据库值来表示 4.23%,这对我来说是不可接受的(直到他们在 SQL Server 中引入“百分比”数据类型)。
我创建了以下值转换器来将 TextBox 中的百分比值(例如 4.2367%)映射到数据库值(例如 0.042367)中:
public class PercentageConverter : IValueConverter
{
//E.g. DB 0.042367 --> UI "4.24 %"
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var fraction = decimal.Parse(value.ToString());
return fraction.ToString("P2");
}
//E.g. UI "4.2367 %" --> DB 0.042367
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
//Trim any trailing percentage symbol that the user MAY have included
var valueWithoutPercentage = value.ToString().TrimEnd(' ', '%');
return decimal.Parse(valueWithoutPercentage)/100;
}
}
请注意格式化字符串(在本例中为“P2”)如何仅限制显示多少小数位,而不限制多少小数位传递给底层绑定源。