我有一个画布和一个红色矩形。
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
的位置一样微不足道的事情可能会非常恼人。谢谢。
答案 0 :(得分:12)
您可以使用Canvas
上的静态函数:
Canvas.SetLeft(element, x);
Canvas.SetTop(element, y);
请注意,Canvas
永远不会显示Left
或Top
等于double.NaN
的元素,这是Left
和Top
的默认值