数値を丸めるために使用するコンバーターがあります。次のようになります。
public class RoundNumberConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!value.IsNumber())
return DependencyProperty.UnsetValue;
return Math.Round((float)value, 2).ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
float number;
if (float.TryParse(value.ToString(), out number))
return number;
return DependencyProperty.UnsetValue;
}
}
UpdateTrigger を PropertyChanged に切り替えるまで、これはうまくいきました。値 1.23 を入力しようとすると、1 文字は期待どおりに機能しますが、ピリオドを入力すると 1. が 1.0 に変換され、値が変更されていないため、ビューモデルに設定されません。また、1. はテキストボックスに表示する際に文字列 1 に変換されるため、ユーザーはピリオドを追加できません。これを修正する簡単な方法はありますか?