This commit is contained in:
39
Converters/DoubleStringConverter.cs
Normal file
39
Converters/DoubleStringConverter.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user