C# 使用十进制时是否存在CastException?类型
在我的场景中,我需要绑定Decimal?键入要加倍的属性?类型属性 下面是使用Double的简单代码C# 使用十进制时是否存在CastException?类型,c#,wpf,exception,data-binding,C#,Wpf,Exception,Data Binding,在我的场景中,我需要绑定Decimal?键入要加倍的属性?类型属性 下面是使用Double的简单代码 public class Model { private double? id = null; public double? ID { get { return id; } set { id = value; } } } 还有我的Xaml <TextBox
public class Model
{
private double? id = null;
public double? ID
{
get { return id; }
set { id = value; }
}
}
还有我的Xaml
<TextBox x:Name="db" Width="100" Height="{Binding Path=ID}" />
它抛出异常(需要在VS中启用所有异常)。这种行为背后有什么具体原因吗
例外情况详情:
发生System.InvalidCastException\u HResult=-2147467262_message=Null对象无法转换为值类型。HResult=-2147467262 IsTransient=false消息=Null对象无法访问 无法转换为值类型。Source=mscorlib StackTrace: 在System.Convert.ChangeType(对象值、类型转换类型、IFormatProvider提供程序)InnerException:
感谢添加命名空间
xmlns:sys=“clr namespace:System;assembly=mscorlib”
并使用以下命令:
<TextBox x:Name="db" Width="100" Height="{Binding ID, TargetNullValue={x:Static sys:String.Empty}}"/>
所以,原因是异常中写的内容: Null对象无法转换为值类型
当它试图从十进制数中生成一个双精度值(用于“Height”属性)时,转换方法(“System.Convert.ChangeType”)不知道如何处理null(able)值。由于当属性(“double?”)和绑定属性(“ID”)的类型相同时,不会调用此方法,您在原始环境中从未遇到过此错误。引发的异常是什么?@Clemens我忘了提到我们必须启用所有exceptions@Digifaktur看我的edit@ClemensVS->Debug->Exception->check all thrownHi,谢谢,我只需要这个行为的原因
<TextBox x:Name="db" Width="100" Height="{Binding ID, TargetNullValue={x:Static sys:String.Empty}}"/>