Позиционирование элемента на холсте

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

1 ответ

Решение

Вы можете использовать статические функции на Canvas:

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

Осторожно, Canvas никогда не отображать элементы с Left или же Top равно double.NaN, который является значением по умолчанию для Left а также Top,

Другие вопросы по тегам