Оценить положение и ширину / высоту отрисовки UserControl - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть UserControl (коробки), которые могут иметь различный размер в зависимости от количества элементов в его ItemsControl.Многие такие пользовательские элементы управления добавляются в Canvas программным способом.

Мне нужно нарисовать стрелки, связывающие эти пользовательские элементы управления.Каков наилучший способ получить исходные координаты элемента управления по Canvas и отображаемому Width / Height, чтобы я мог определить начальную и конечную точки стрелки.

1 Ответ

2 голосов
/ 28 декабря 2011

Canvas предоставляет координаты каждого элемента управления с помощью прикрепленных свойств Canvas.Left и Canvas.Top, которые вы знаете, если вы все равно их расположили. Таким образом, (немного) более сложная часть получает другую координату, и для этого вы хотите знать визуализированную высоту / ширину. ActualHeight и ActualWidth дают вам это, предполагая, что элемент управления уже выложен:

double top = Canvas.GetTop(control)
double bottom = top + control.ActualHeight
double left = Canvas.GetLeft(control)
double right = left + control.ActualWidth

Если вы делаете это до того, как элементы управления будут отображены на экране, вы можете сначала выполнить control.UpdateLayout() (или control.Measure()), чтобы убедиться, что система макетов измеряет их размер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...