windows phone 8地图未在用户控件中显示

时间:2014-01-30 07:21:29

标签: c# xaml windows-phone-8 user-controls maps

我想在我的应用程序中实现“附加位置”功能。 我决定创建一个用户控件并将我的地图放入其中,然后在单击某个按钮时,我会在全屏弹出/自定义消息框中显示此控件。

问题是一切正常,只是地图根本没有显示;我可以检索我的位置,放置图钉,缩放似乎工作(尽管事实上我没有看到任何东西!)。

更奇怪的是,复制并粘贴到手机应用程序页面的相同代码工作正常,并显示地图。我不明白,这是我不知道的限制吗?

这是我的代码:

    <UserControl
       .....
        xmlns:maps="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"
        mc:Ignorable="d"
     ....
    >
<Grid x:Name="LayoutRoot" Background="Black">

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <maps:Map Mode="AerialWithLabels"  
                    Grid.Row="0" 
                    Height="300" 
                    HorizontalAlignment="Left" 
                    Name="map1" VerticalAlignment="Top" 
                    Width="460" Margin="-12,0,0,0">
            </maps:Map>
            <Button Content="share location" 
                    Name="btn_SendLocation" 
                    IsEnabled="False" 
                    Grid.Row="1" 
                    Click="Button_Click_1"/>
            <ListBox Grid.Row="2" 
                     Name="lst_NearBy" 
                     DataContext="{Binding Location}" 
                     Tap="lst_NearBy_Tap">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="0,5">
                            <TextBlock Text="{Binding mName}" Style="{StaticResource PhoneTextLargeStyle}"/>
                            <TextBlock Text="{Binding mVicinity}" Margin="10,0,0,0" Foreground="Gray"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Grid>
    </Grid>

1 个答案:

答案 0 :(得分:0)

您是否尝试以编程方式添加地图?

private Constructor()
{
    Map my_map = new Map();
    my_map.Name= "map1";
    my_map.mode = "AerialWithLabels";
    my_map.Height = 300;
    my_map.Margin = new Thickness(-12,0,0,0);
    my_map.VerticalAlignment = System.Windows.VerticalAlignment.Top;
    my_map.HorizontalAlignment= System.Windows.HorizontalAlignment.Left;
    ContentPanel.Children.Add(my_map);
}