次のような文字列形式を使用するだけの場合、{0:F2}%
4.23% を表すために 4.23 のようなデータベース値を我慢する必要がありますが、これは私には受け入れられません (SQL Server に「パーセンテージ」データ型が導入されるまで)。
4.2367% などの TextBox のパーセンテージ値を 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") は、表示される小数点以下の桁数のみを制限し、基になるバインディング ソースに渡される小数点以下の桁数は制限しないことに注意してください。