【发布时间】:2010-12-23 23:28:01
【问题描述】:
我有一个画布和一个红色矩形。
Rectangle 实现了 MouseDown 事件处理程序:
private void RedRectangle_MouseDown(object sender, MouseButtonEventArgs e)
{
CreateMyBorder();
}
CreateMyBorder 方法应该创建一个与画布上的矩形具有相同大小和 位置 的Border UIElement,即它应该覆盖红色矩形。
复制红色矩形的Width 和Height 属性并为Border 元素设置它们很简单:
myBorder.Height = RedRectangle.Height;
myBorder.Width = RedRectangle.Width;
但是,经过 2 小时的反复试验,在我看来,复制画布上红色矩形的位置似乎是不可能的!预期:
double x = RedRectangle.GetValue(Canvas.Left);
double y = RedRectangle.GetValue(Canvas.Top);
myBorder.SetValue(Canvas.Left, x);
myBorder.SetValue(Canvas.Top, y);
不起作用,因为 x 和 y 变量值是 NaN。为什么?
请帮忙,我无法相信像在面板上获取和设置UIElement 的位置这样微不足道的事情会如此烦人。谢谢。
【问题讨论】:
-
GetValue 也返回一个对象 - 您应该将其转换为双精度,例如
(double)RedRectangle.GetValue(Canvas.Top);
标签: wpf canvas wpf-controls uielement wpf-positioning