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

提前致谢,

亚历克斯

有帮助吗?

解决方案

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

只要确保把它的之后的地图控制(否则会被地图背后呈现的,将因此是不可见的)。

其他提示

,以实现这一点的最简单的方法是将显示/隐藏因为一些性能考虑的图钉上点击而不是的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;   
}

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

一个很棒的视频解释了如何执行此操作,位于 这里.

其他解决方案是使用 Windows Phone Silverlight 工具包中的 ContextMenu!只需前往 编码乐趣 CodePlex 页面并下载它(它包含工具包)并在 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>

这样,当您点击并按住图钉时,您将获得连接菜单!(这里也找到了很好的例子: 例子 )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top