Как вызывать и захватывать события мыши из класса (без наследования от контроля)? - PullRequest
2 голосов
/ 23 ноября 2011

У меня проблемы с чем-то, и мне нужна помощь!

Мой контекст:

Приложение Windows WPF, которое отображает сгенерированные кодом многоугольники на виртуальной земле3D карта.

Моя проблема:

Невозможно превратить сгенерированные полигоны в "интерактивные элементы".

Шаги, предпринятые до сих пор:

Мой первый подход состоял в том, чтобы использовать конвейер присоединения к событиям VE, это не что иное, как «наблюдение» за всеми событиями, инициированными через элемент управления 3D-глобусом, и возвращение списка всего, что существует в месте для щелчка.Хотя это работает, я получаю ужасное смещение при каждом щелчке мыши, что пока делает этот подход бесполезным.

Мой второй подход состоял в том, чтобы прикреплять обработчики щелчков мыши к полигонам.Для этого я создал этот класс:

  public class ExtendedPolygon:PolygonGeometry
  {

  }

, который расширяет исходный объект PolygonGeometry.Затем я следовал совету, помещенному в этот поток , давая классам события click 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);
 }

Then (и радиво время тестирования этой простоты) я сделал все события, прикрепленные к коду моего представления за страницей:

polygon.Click +=new EventHandler<MouseEventArgs>(polygon_MouseClick);



void pol_MouseClick(object sender, MouseEventArgs e)
    {
            ShowBox(" ShapeId:" + "I clicked");  
    }

Итак, мой код выполняется, многоугольники отображаются, и все же никакие события щелчка не генерируются.Оставив мне следующие вопросы:

-Я делаю это неправильно?Как мне присоединить весь конвейер для захвата и вызова событий мыши из класса (который не наследуется от контроля) в WPF?

- Есть идеи, как это исправить?

Спасибоза чтение и за время, затраченное на это!

PS: Если кто-нибудь знает лучший способ прикрепить события к Полигонам Виртуальной Земли, у меня все уши =)

1 Ответ

0 голосов
/ 24 ноября 2011

Я не вижу кода, который на самом деле вызывает CheckIfClicked, в оригинальном посте это было сделано в переопределении OnMouseUp. У вас есть похожий код в вашем приложении, которого нет в вашем вопросе?

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