WP7图钉工具提示/泡泡

时间:2010-11-22 14:30:03

标签: windows-phone-7 bing-maps pushpin

我正在将一个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中没有类似的控件可以创建一个泡泡 - 我怎么能创建类似的东西呢?

提前致谢,

亚历

4 个答案:

答案 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