我正在将一个iPhone应用程序移植到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中没有类似的控件可以创建一个泡泡 - 我怎么能创建类似的东西呢?
提前致谢,
亚历
答案 0 :(得分:4)
您可以简单地在LayoutRoot中放置一个方形边框,其中Visibility =“Collapsed”,然后当您点击图钉时更新其内容并使其可见。
只需确保将放在地图控件之后(否则它会在地图后面呈现,因此会不可见)。
答案 1 :(得分:2)
实现此目的的最简单方法是在Tap上显示/隐藏图钉的内容而不是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;
}
答案 2 :(得分:1)
您可以创建自定义弹出窗口。
解释如何执行此操作的精彩视频位于here。
答案 3 :(得分:0)
其他解决方案是使用Silverlight工具包中的ContextMenu for Windows Phone! 只需转到CodePlex上的Coding4Fun页面并下载它(它包含工具包),并在PushPin定义中的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>
这样,当您点按并按住图钉时,您将获得竞赛菜单! (这里也有一个很好的例子:example)