Нажмите, чтобы вставить кнопки и отобразить более подробную информацию об этом элементе в Windows Phone 8
Я работаю над простым приложением карты для Windows Phone 8. Я установил несколько кнопок с помощью инструментария Windows Phone. Я хочу показать более подробную информацию при нажатии кнопки. Вот мой код
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<maps:Map Name="MyMap"
CartographicMode="Road" ColorMode="Light"
LandmarksEnabled="True" PedestrianFeaturesEnabled="True">
<toolkit:MapExtensions.Children>
<toolkit:MapItemsControl Name="allDatas">
<toolkit:MapItemsControl.ItemTemplate>
<DataTemplate>
<toolkit:Pushpin GeoCoordinate="{Binding Coordinate}"
Content="{Binding Name}"
Background="Green"
Foreground="Black"
Tap="Pushpin_Tap"/>
</DataTemplate>
</toolkit:MapItemsControl.ItemTemplate>
</toolkit:MapItemsControl>
</toolkit:MapExtensions.Children>
</maps:Map>
</Grid>
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
ObservableCollection<Data> datas = new ObservableCollection<Data>()
{
new Data() { Coordinate = new GeoCoordinate(22.832991,89.539921), Name = "H", Details = "Hospital", Address = "Address of Hospital" },
new Data() { Coordinate = new GeoCoordinate(22.845489,89.539406), Name = "P", Details = "Fire Station", Address = "Address of Fire"},
new Data() { Coordinate = new GeoCoordinate(22.818019,89.54563), Name = "F", Details = "Police Station", Address = "Address of Police"}
};
ObservableCollection<DependencyObject> children = MapExtensions.GetChildren(MyMap);
var obj = children.FirstOrDefault(x => x.GetType() == typeof(MapItemsControl)) as MapItemsControl;
obj.ItemsSource = datas;
}
private void Pushpin_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Pushpin pushpin = sender as Pushpin;
if (pushpin.Content != null)
{ //Here i want to show details
MessageBox.Show(pushpin.Content.ToString());
}
}
2 ответа
private void Pushpin_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
var element = (FrameworkElement)sender;
Data data = (Data)element.DataContext;
MessageBox.Show(data.Address);
}
Может быть, немного поздно, но я пытался добиться того же. Показать больше данных на канцелярской кнопке Нажмите. Я нашел рабочий ответ здесь, хотя это ответ на немного другой вопрос.
Вы можете сделать это:
pushpin.Tap += delegate
{
if (AppSettings["PushpinOpen"] == true)
{
pushpin.Content = attraction.Content;
AppSettings["PushpinOpen"] = attraction.Title;
AppSettings.Save();
}
else
{
pushpin.Content = attraction.Title;
AppSettings.Remove("PushpinOpen");
}
};
Вам не нужно делать это с IsolatedStorageSettings (в данном случае AppSettings). Вам просто нужно проверить, открыта ли кнопка, и если нет, вы можете изменить ее содержимое на более подробную информацию.