2010-11-22 85 views
2

我移植一个iPhone应用程序,以WP7其中包含了地图几种标志物/图钉,我从一个web服务(位置,图标和标题)获得。WP7图钉提示/气泡

我已经设置来显示地图以及为图钉一些代码所需的XAML:

<phone:PhoneApplicationPage.Resources> 
    <ControlTemplate x:Key="customPushpin" TargetType="my:Pushpin"> 
     <Image Height="39" Source="Resources/Icons/Pushpins/pinGreen.png" Stretch="Fill" Width="32"/> 
    </ControlTemplate> 
</phone:PhoneApplicationPage.Resources> 

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <my:Map Height="Auto" HorizontalAlignment="Stretch" Margin="0" x:Name="Map" 
      VerticalAlignment="Stretch" Width="Auto" CredentialsProvider="{Binding CredentialsProvider}" 
      CopyrightVisibility="Collapsed" LogoVisibility="Collapsed" Center="{Binding Mode=TwoWay, Path=Center}" 
      ZoomBarVisibility="Visible" 
      ZoomLevel="{Binding Zoom, Mode=TwoWay}"> 
     <my:MapItemsControl ItemsSource="{Binding Pushpins}"> 
      <my:MapItemsControl.ItemTemplate> 
       <DataTemplate> 
        <my:Pushpin MouseLeftButtonUp="Pushpin_MouseLeftButtonUp" 
           Location="{Binding Location}" 
           Template="{StaticResource customPushpin}">       
        </my:Pushpin> 
       </DataTemplate> 
      </my:MapItemsControl.ItemTemplate> 
     </my:MapItemsControl> 
    </my:Map>   
</Grid> 

我正在寻找一种方式来添加某种泡沫时的图钉的用户点击。我已经看了信息框/工具提示,但由于他们在悬停工作,这不是我可以用于手机(点击/点击)。

我猜有WP7中没有类似的控制,创建一个泡沫 - 我怎么可能去创造类似的东西?

由于提前,

亚历

回答

4

你可以简单地把一个正方形边框内能见度LayoutRoot =“坍塌”,那么当您单击图钉更新其内容,并使其可见。

只要确保将放在之后,您的地图控件(否则它将呈现在地图的后面,因此不可见)。

+0

谢谢您的回答,我居然也出现了类似的做法。我在屏幕底部放置了一个边框(在Blend中有一些奇特的效果),当用户用所述针脚的信息点击一个针脚时显示。 – Xander 2010-11-23 11:19:25

1

您可以创建自定义弹出。

一个伟大的视频是exaplains怎么做,这是位于here

0

其他解决方案是使用Windows Phone的Silverlight工具包中的ContextMenu! 只要进入Coding4Fun页CodePlex上下载它(它包含的工具包),并在您的XAML图钉定义里面添加以下内容:

<map:Pushpin x:Name="currentLocation"> 
<toolkit:ContextMenuService.ContextMenu> 
    <toolkit:ContextMenu IsZoomEnabled="False"> 
     <toolkit:MenuItem Header="this is menu item 1" Click="MenuItem_Click" /> 
     <toolkit:MenuItem Header="this is menu item 2" Click="MenuItem_Click" /> 
     <toolkit:MenuItem Header="this is menu item 3" Click="MenuItem_Click" /> 
    </toolkit:ContextMenu> 
</toolkit:ContextMenuService.ContextMenu></map:Pushpin> 

这样,当你点击并按住图钉,你会得到contectmenu! (在此处找到了一个很好的示例:example

2

实现此目的的最简单方法是显示/隐藏图钉上的内容而不是MouseLeftButtonUp,因为有一些性能方面的考虑。

void pushPin_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    this.border.Visibility = System.Windows.Visibility.Visible; 

    //stop the event from going to the parent map control 
    e.Handled = true; 
} 

private void map_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    this.border.Visibility = System.Windows.Visibility.Collapsed; 
}