尝试从System.Double转换为System.Single时出错

时间:2011-09-26 22:31:14

标签: c# silverlight silverlight-4.0

我相信这会变得简单。我有以下Silverlight 4 C#代码:

Rectangle r = new Rectangle();
r.Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255));
r.SetValue(Canvas.LeftProperty, 150f);
r.SetValue(Canvas.TopProperty, 50f);
r.Width = 100;
r.Height = 100;

LayoutRoot.Children.Add(r);

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

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

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

2 个答案:

答案 0 :(得分:1)

你正在传递一个盒装的浮动,然后矩形试图将它拆箱到一个双。只需要输入双打,就可以了:

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

请注意,Canvas.LeftCanvas.Top的类型为double,而不是float

答案 1 :(得分:1)

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