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());
}
}
我有一个 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());
}
}