Перетаскиваемая и нажимаемая кнопка на карте Silverlight Bing - PullRequest
1 голос
/ 19 апреля 2011

Я пытаюсь создать метку на карте Silverlight Bing, которая будет как перетаскиваемой, так и нажимаемой.Я нашел здесь некоторый код http://pietschsoft.com/post/2010/05/30/Draggable-Pushpins-using-Bing-Maps-Silverlight-Control.aspx для достижения перетаскиваемой части.

Я нанес карту на карте, щелкнув мышью, чтобы уронить булавку.

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

Если я заменю этот контактс помощью ControlTemplate, который является кнопкой, я могу перехватить щелчок, но теперь у меня нет перетаскиваемой кнопки.

Кто-нибудь может порекомендовать решение?

1 Ответ

1 голос
/ 20 апреля 2011

Я нашел этот подход к работе. Запись здесь, чтобы это помогло кому-то еще.

  1. Создайте шаблон содержимого для ссылки DraggablePushpin сверху, чтобы он содержал только DraggableButton (ниже).
  2. наследуется от Button для создания кнопки DraggableButton (на которую есть ссылка в приведенном выше шаблоне)

  3. В этой DraggableButton переопределите OnMouseLeftButtonDown и OnMouseLeftButtonUp и передайте их DraggablePushpin. Я создал свойство с именем ThePin для DraggableButton и установил его в методе OnApplyTemplate объекта DraggablePushpin. Вы можете вызвать GetTemplateChild () в OnApplyTemplate, чтобы получить ссылку на экземпляр DraggableButton в канцелярской кнопке.

  4. DraggableButton теперь может переопределять событие Click для пользовательских действий, а также передавать другие события в DraggablePushpin, чтобы он работал как положено.

Может быть, есть более чистый способ сделать это, но это то, что сработало для меня.

...