C# 尝试从系统强制转换时出错。双精度转换为系统。单精度

C# 尝试从系统强制转换时出错。双精度转换为系统。单精度,c#,silverlight,silverlight-4.0,C#,Silverlight,Silverlight 4.0,我相信这将是一件简单的事情。我有以下Silverlight 4 C#代码: 出于某种原因,当我运行我的应用程序时,它在SetValue行上得到一个错误。我得到的错误是: Uncaught Error: Unhandled Error in Silverlight Application DependencyProperty of type System.Double cannot be set on an object of type System.Single. 我试图隐式转换为Single

我相信这将是一件简单的事情。我有以下Silverlight 4 C#代码:

出于某种原因,当我运行我的应用程序时,它在SetValue行上得到一个错误。我得到的错误是:

Uncaught Error: Unhandled Error in Silverlight Application DependencyProperty of type System.Double cannot be set on an object of type System.Single.

我试图隐式转换为Single,但仍然得到相同的错误。有什么想法吗?

您正在传递一个装箱的浮点,然后矩形试图将其解装箱为双精度浮点。刚开始的时候,先传双打,应该没问题:

r.SetValue(Canvas.LeftProperty, 150d);
r.SetValue(Canvas.TopProperty, 50d);

请注意,和的类型为
double
,而不是
float

这些属性的类型为double。您正在传递单精度值、浮点值。通过双打,一切都会好起来。

Jon,谢谢你的接球。不知什么原因,前缀就在我头上。甚至都没注意到我在漂浮它。这个解决方案对我有效。谢谢
r.SetValue(Canvas.LeftProperty, 150d);
r.SetValue(Canvas.TopProperty, 50d);