C# Windows Phone - Пользовательские кнопки с соответствующими данными
Я пытаюсь добавить карту в свое приложение. На карте должны быть показаны настраиваемые выводы (из изображений png), и на каждом из них должен быть свой идентификатор, который я буду использовать для извлечения данных из базы данных.
Поэтому, когда пользователь нажимает на них, на связанном событии, я должен иметь возможность получить этот идентификатор...
Я пробовал два варианта:
Первый из них описан на веб-сайте Microsoft: http://msdn.microsoft.com/en-us/windowsphonetrainingcourse_usingbingmapslab_topic3.aspx
Это работает, создавая настроенные контакты... но я не могу найти способ хранить в них какие-либо данные, которые я смогу получить позже. Потому что, когда я создаю штифт, я работаю с PushpinModel, но когда событие click происходит на одном из них, отправитель больше не PushpinModel, а просто Pushpin.
Второй - тот, который описан на многих веб-сайтах и в учебных пособиях, который в основном предлагает создать канцелярскую кнопку с прозрачным фоном и изображением в качестве содержимого или переднего плана. (например, http://www.geekchamp.com/articles/windows-phone-drawing-custom-pushpins-on-the-map-control-what-options-do-we-have)
С помощью этого я, безусловно, могу сохранить идентификатор и получить его в отправителе var при нажатии на кнопку..... но картинка полностью стоит на неправильной позиции на карте, так как на самом деле она не начинается с точки местоположения, но появляется только на "содержимом" прямоугольника прозрачной кнопки.
Итак, резюмируем: 1-й вариант: настроенный пин-код отображается в нужном месте, но я не могу получить идентификатор. 2-й вариант: я могу получить идентификатор, но настроенный пин-код не отображается в нужном месте.
Есть идеи, как решить одну из двух проблем? Или..... у вас есть третий вариант?
1 ответ
Вы можете извлечь PushpinModel из канцелярской кнопки. Если вы следовали учебному пособию, которое вы связали, вы создали метку, связав список PushpinModel с MapItemsControl. В этом случае PushpinModel хранится в DataContext
свойство канцелярской кнопки. Чтобы извлечь его из события щелчка на кнопке, сначала sender
параметр, то DataContext
имущество:
var pushpin = (Pushpin)sender;
var model = (PushpinModel)pushpin.DataContext;