2

我正在将一个 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

4 回答 4

4

您可以简单地在 LayoutRoot 中使用 Visibility="Collapsed" 放置一个方形边框,然后当您单击图钉时,您会更新其内容并使其可见。

只需确保将其放在地图控件之后(否则它将呈现在地图后面并因此不可见)。

于 2010-11-23T09:22:20.890 回答
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;   
}
于 2012-06-22T09:43:14.813 回答
1

您可以创建一个自定义弹出窗口。

说明如何执行此操作的精彩视频位于此处

于 2010-11-22T18:18:45.327 回答
0

其他解决方案是使用适用于 Windows Phone 的 Silverlight 工具包中的 ContextMenu!只需转到 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>

这样,当您点击并按住图钉时,您将获得 contectmenu!(在这里也找到了很好的例子:example

于 2011-02-11T13:30:09.450 回答