У меня что-то не получается, и мне нужна помощь!
Мой контекст:
Приложение Windows WPF, которое отображает сгенерированные кодом полигоны на карте Virtual Earth 3D.
Моя проблема:
Невозможно превратить сгенерированные полигоны в "интерактивные элементы".
Предпринятые шаги:
Мой первый подход заключался в использовании конвейера присоединения событий VE, это не что иное, как «наблюдение» за всеми событиями, возникающими в элементе управления 3D-глобусом, и возвращение списка всего, что существует в месте для щелчка. Хотя это работает, я получаю ужасное смещение при каждом щелчке мыши, что делает этот подход бесполезным на данный момент.
Мой второй подход заключался в прикреплении обработчиков щелчка мышью к полигонам. Для этого я создал этот класс:
public class ExtendedPolygon:PolygonGeometry
{
}
Это расширяет исходный объект PolygonGeometry. Затем я последовал совету, размещенному в этом потоке , давая классам события щелчка C # для реализовать "слушатели" и обработчики событий, например:
public event EventHandler<MouseEventArgs> Click;
protected void OnClick(MouseEventArgs e)
{
EventHandler<MouseEventArgs> handler = Click;
if (handler != null)
{
handler(this, e);
}
}
internal void CheckIfClicked(MouseEventArgs e)
{
OnClick(e);
}
Затем (и для простоты при тестировании) я сделал все событие, прикрепленное к моей странице с кодом представления:
polygon.Click +=new EventHandler<MouseEventArgs>(polygon_MouseClick);
void pol_MouseClick(object sender, MouseEventArgs e)
{
ShowBox(" ShapeId:" + "I clicked");
}
Итак, мой код запускается, полигоны отображаются, но события щелчка не возникают. Оставив меня со следующими вопросами:
-Я что-то не так делаю? Как мне подключить весь конвейер для захвата и вызова событий мыши из класса (который не наследуется от элемента управления) в WPF?
-Любые идеи о том, как это исправить?
Спасибо за чтение и за время, потраченное на это дело!
PS: Если кто-нибудь знает, как лучше прикрепить события к Полигонам Virtual Earth, я все уши =)