У меня есть холст и на нем лежит красный прямоугольник.
Прямоугольник
имеет реализованный обработчик событий 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
на панели, может вызывать такое раздражение. Спасибо.