Windows phone 8 单击图钉并在Windows Phone 8中显示该项目的更多详细信息

Windows phone 8 单击图钉并在Windows Phone 8中显示该项目的更多详细信息,windows-phone-8,pushpin,Windows Phone 8,Pushpin,我正在为WindowsPhone8开发一个简单的地图应用程序。我使用windows phone toolkit设置了多个图钉。我想在点击图钉项目时显示更多详细信息。 这是我的密码 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <maps:Map Name="MyMap" CartographicMode="Road" ColorMode="Li

我正在为WindowsPhone8开发一个简单的地图应用程序。我使用windows phone toolkit设置了多个图钉。我想在点击图钉项目时显示更多详细信息。 这是我的密码

    <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());
        }
    }

已加载无效主页(对象发送器、路由目标)
{
ObservableCollection数据=新的ObservableCollection()
{
新数据(){坐标=新地理坐标(22.832991,89.539921),Name=“H”,Details=“Hospital”,Address=“Address of Hospital”},
新数据(){坐标=新地理坐标(22.845489,89.539406),Name=“P”,Details=“消防局”,Address=“火灾地址”},
新数据(){坐标=新地理坐标(22.818019,89.54563),Name=“F”,Details=“派出所”,Address=“警察地址”}
};
ObservableCollection children=MapExtensions.GetChildren(MyMap);
var obj=children.FirstOrDefault(x=>x.GetType()==typeof(MapItemsControl))作为MapItemsControl;
obj.ItemsSource=数据;
}
私有无效图钉点击(对象发送器,System.Windows.Input.GestureEventArgs e)
{
图钉图钉=发送器为图钉;
if(pushpin.Content!=null)
{//我想在这里显示详细信息
Show(pushpin.Content.ToString());
}
}
您可以执行以下操作:

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)来执行此操作。您只需检查图钉是否已打开,如果未打开,则可以将图钉的内容更改为更详细的信息

private void Pushpin_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
var element = (FrameworkElement)sender;
Data data = (Data)element.DataContext;
MessageBox.Show(data.Address);
}
可能有点晚了,但我也试着做到这一点。显示有关图钉点击的更多数据。 我找到了一个有效的答案,虽然这是一个有点不同的问题的答案