如何在Bing Maps,Windows Phone中切换显示/隐藏图钉信息框的状态?

时间:2012-11-29 07:43:53

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

这是一款简单的应用。它显示了基于数据绑定的动态多个图钉。

当用户点击图钉时,信息框将在图片中显示如上所示。

enter image description here

当用户再次点击图钉时。信息框将崩溃。

如果用户点击地图中不是图钉的任何区域。所有图钉的信息框都会崩溃。

另一件事是;当点击信息框时,它将导航到该位置的详细信息页面。

这是我的资源部分。

<phone:PhoneApplicationPage.Resources>
    <ControlTemplate x:Key="currentPushPin" TargetType="my:Pushpin">
        <Grid x:Name="ContentGrid"
           Width="58"
           Height="76"
           Margin="0">
            <Image Source="images/currentPin.png" Stretch="Fill"/>
        </Grid>
    </ControlTemplate>

    <ControlTemplate x:Key="normalPushPin" TargetType="my:Pushpin">
        <StackPanel>
            <ContentPresenter x:Name="content" HorizontalAlignment="Center"/>
            <Path Data="M0,0 L0,1 L1,0"
                        Fill="Black" Stretch="Fill" Margin="15,0" Height="12"
                                Width="18" Visibility="{Binding RelativeSource={RelativeSource TemplatedParent},
                                Path=Content.Visibility, Mode=TwoWay}" HorizontalAlignment="Left" />
            <Image Source="images/Pin.png" Stretch="None" HorizontalAlignment="Left"/>
        </StackPanel>
    </ControlTemplate>

    <DataTemplate x:Key="LogoTemplate">
        <my:Pushpin Background="#FFB6DE2E" Location="{Binding location}" Tap="Pushpin_Tap">
            <my:Pushpin.Content>
                <Border Background="Black" Width="130" Visibility="Collapsed" x:Name="border"  HorizontalAlignment="Center" >
                    <StackPanel>
                        <TextBlock TextAlignment="Center" Text="{Binding title}"/>
                    </StackPanel>
                </Border>
            </my:Pushpin.Content>
        </my:Pushpin>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

这是我的Map和MapItemControl。

<my:Map ZoomLevel="10"  Margin="0,-21,0,0" Name="myMap" CredentialsProvider="AsbJ8nhHrawCJNpgYLyPRSunojuLOKcZtMj_ZUEgEGW5dSsczqrQHDZwbi0i2bFY" Tap="map_Tap">
            <my:Pushpin Name="currentPin" Template="{StaticResource currentPushPin}" Margin="0,-22,0,0">
            </my:Pushpin>
            <my:MapItemsControl ItemTemplate="{StaticResource LogoTemplate}" ItemsSource="{Binding PushpinCollection}" >
            </my:MapItemsControl>
        </my:Map>

问题是我应该在这些事件处理程序中编写什么代码? 另一个问题是,如果点击信息框,我怎么能让信息框导航到其他页面。

//Event Handler for pushpins
    private void Pushpin_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        //What I should write here?
    }


    private void map_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        //What I should write here?
    }

谢谢!!!

1 个答案:

答案 0 :(得分:0)

我知道这已经很晚了,但是要为有类似问题的人省下一些痛苦 - 看看http://igrali.com/2012/01/07/show-a-tooltip-for-tapped-pushpin-on-windows-phone/

它可能会为您提供一些如何进行的指导。