8

我有一个画布和一个红色矩形放在上面。 Rectangle已实现MouseDown事件处理程序:

private void RedRectangle_MouseDown(object sender, MouseButtonEventArgs e)
{
    CreateMyBorder();
}

CreateMyBorder方法应该创建一个与画布上的矩形Border具有相同大小和位置的 UIElement ,即它应该覆盖红色矩形。

复制红色矩形的WidthHeight属性并为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);

不起作用,因为xy变量值是NaN。为什么?

请帮忙,我无法相信像UIElement在面板上获取和设置 ' 位置这样微不足道的事情会如此烦人。谢谢。

4

1 回答 1

12

您可以在以下位置使用静态函数Canvas

Canvas.SetLeft(element, x);
Canvas.SetTop(element, y);

请注意,Canvas切勿显示具有LeftTop等于 的元素,这是和double.NaN的默认值。LeftTop

于 2010-12-23T23:31:30.580 回答