C#/WPF Textbox error : "Value '' cannot be converted", TargetNull not working

C#/WPF Textbox error : "Value '' cannot be converted", TargetNull not working

我有一个 Listview 和一个 Textbox 绑定到所选项目。 当用户删除文本框中的值(双精度值)时,出现以下错误:Value '' cannot be converted。所以我有 TargetNullValue='',像这样:

<TextBox x:Name="textBoxVoltage" Text="{Binding Voltage, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}" />

但我仍然收到错误....我做错了什么?谢谢。

问题是您的 Voltage 是类型 double 并且 '' 无法转换为双精度。

您可以将 Voltage 类型更改为 double?,这样您就可以执行此操作。


替代方法是使用转换器,但假设 0 和空是同一件事:

public class EmptyDoubleConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null || (double)value == default(double))
            return "";

        return value.ToString();
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (String.IsNullOrEmpty(value as string))
            return default(double);

        return double.Parse(value.ToString());
    }
}