This commit is contained in:
xyy
2026-04-02 20:10:08 +08:00
parent 47cfa4c05b
commit 7042f94774
4 changed files with 97 additions and 6 deletions

View File

@@ -0,0 +1,39 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace MembranePoreTester.Converters
{
// 将 double 与 string 之间进行安全转换,避免在输入未完成时把值重置为 0
public class DoubleStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null) return string.Empty;
if (value is double d)
{
return d.ToString("G", culture);
}
return value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
var s = (value as string) ?? string.Empty;
s = s.Trim();
if (string.IsNullOrEmpty(s))
{
// 不强制将空字符串写回为0避免用户输入时被覆盖
return Binding.DoNothing;
}
if (double.TryParse(s, NumberStyles.Any, culture, out double result))
{
return result;
}
// 如果解析失败,不更新源
return Binding.DoNothing;
}
}
}