Размещение UIElement на холсте

У меня есть холст и на нем лежит красный прямоугольник. Прямоугольник имеет реализованный обработчик событий MouseDown :

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

Метод CreateMyBorder должен создать UIElement 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 на панели, может вызывать такое раздражение. Спасибо.

8
задан animuson 16 October 2013 в 17:27
поделиться