FindElementsInHostCoordinates относительно пространства управления не вся страница

Я использую метод VisualTreeHelper FindElementsInHostCoordinates для нахождения ListBoxItem в данном местоположении X и Y. Однако значение X и Y, кажется, связано с точками на всей странице не только ListBox, я интересуюсь (даже при том, что я являюсь передающим в том элементе в параметр поддерева метода). Ниже, это относится к пользовательскому элементу управления, который происходит из ListBox.

foreach (UIElement element in VisualTreeHelper.FindElementsInHostCoordinates(new Point(X, Y), this))
{
    if (element is ListBoxItem)
    {
        int index = this.ItemContainerGenerator.IndexFromContainer(element);
        break;
    }
}

Так, (0,0) был бы относительно верхнего левого угла всего плагина не верхний левый угол ListBox. Я должен сделать некоторую математическую работу здесь сам (в коде) для преобразования координат страницы к координатам ListBox или есть ли некоторый другой способ сделать тест хита, чтобы сказать, ли данная точка X и Y по ListBoxItem?

Спасибо.

5
задан AnthonyWJones 6 February 2010 в 22:09
поделиться

1 ответ

Я сам понял это (вау). Я определил верхнее и левое значения для своего элемента управления, а затем добавил внутренние значения X и Y в свой элемент управления:

GeneralTransform gt = this.TransformToVisual(Application.Current.RootVisual as UIElement);
Point offset = gt.Transform(new Point(0, 0));
double controlTop = offset.Y + Y;
double controlLeft = offset.X + X;

Итак, я могу передать значения X и Y относительно моего элемента управления, но этот код преобразует их в глобальные координаты .

У меня работает, привет !, нет значка перекати-поле по этому вопросу. :)

9
ответ дан 14 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: