Нахождение точного положения графического объекта относительно некоторого другого Canvas - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть ListBox, и когда я выбираю элемент в этом ListBox, я хочу продублировать изображение и поместить его на холст, содержащий все другие объекты в моем приложении.Это работает нормально по большей части, однако, если элемент в ListBox находится дальше, так что мне нужно прокрутить, чтобы увидеть элемент, координаты больше не точны.

Есть ли такая функция, как Canvas.getGlobalPosition (UIElement), который позволил бы мне затем установить Canvas.SetTop (uiElement, globalCoordinateSpace.Y) и позволить мне идеально разместить одно изображение непосредственно поверх другого, независимо от того, где в ListBox оно находится?

Спасибо.

1 Ответ

2 голосов
/ 07 февраля 2012

Вы можете использовать метод TransformToVisual для создания преобразования, которое позволяет вам определять местоположение одного элемента относительно другого.

Я часто использую следующий метод расширения, чтобы позволить мнеопределить относительную позицию двух UIElements:

    /// <summary>
    /// Gets the relative position of the given UIElement to this.
    /// </summary>
    public static Point GetRelativePosition(this UIElement element, UIElement other)
    {
        return element.TransformToVisual(other)
                      .Transform(new Point(0, 0));
    }

Точную позицию на экране можно получить, вызвав приведенный выше код для Application.Current.RootFrame.

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