在XAML中添加MapControl会导致“灾难性失败”错误。

11

我正在使用Visual Studio Ultimate 2013 Version 12.0.30501.00 Update 2创建一个通用应用程序。当我在xaml中添加地图控件时,出现了灾难性错误。

<Maps:MapControl Visibility="Collapsed"/>. 

我添加了

xmlns:Maps="using:Windows.UI.Xaml.Controls.Maps" 
在页面标题中添加了“位置”功能,并将其添加到应用程序清单文件中。有人面临过同样的问题吗?您可以通过创建一个简单的应用程序并仅添加MapControl来测试它。请帮我解决这个问题。
在正常的Windows Phone 8.1应用程序中也观察到了这个问题。我错过了什么吗?
当我尝试在模拟器中运行应用程序时,出现了问题。
错误没有显示任何其他信息,只显示“灾难性失败”,没有其他东西。
也许我会尝试重新安装Visual Studio。但是还有一件有趣的事实,如果我不隐藏页面上的地图控件,它就能正常工作。
您可以通过创建一个简单的应用程序,然后将地图控件的Visibility属性设置为'Collapsed'来测试它吗?
<Page
    x:Class="TestMaps.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:TestMaps"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:Maps="using:Windows.UI.Xaml.Controls.Maps" 
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <Maps:MapControl Visibility="Collapsed" />
    </Grid>
</Page>

问题在多台电脑上都有观察到。


我有完全相同的问题,所以这个问题还没有被解决。 - Camilo Martinez
2个回答

6
我已经测试过您的示例,确实在我的手机上也存在这样的问题。
经过检查,可以通过代码设置 Collapsed - 因此作为解决方法:
<Grid>
   <Maps:MapControl Name="myMap" Visibility="Visible" />
</Grid>

在代码后端:
public MainPage()
{
    this.InitializeComponent();
    this.Loaded += (sender, e) => myMap.Visibility = Visibility.Collapsed;
}

谢谢。按照您所提到的,代码中隐藏控件是有效的。 - Vinoth Selvaraj

1
我想到了一个解决办法。不要使用visibility,而是使用地图的高度/宽度属性来隐藏/显示地图。当你想要隐藏它时,将它们设置为0,当你想要显示它时,将它们设置为父元素的宽度/高度。这里是一个代码示例:
<Page
    x:Class="WP81App.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:WP81App"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
     xmlns:Maps="using:Windows.UI.Xaml.Controls.Maps" 
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <Maps:MapControl Name="MyMap" Height="0" Width="0" />
        <Button Content="Show Map" Click="ShowMapBtn_Clicked" HorizontalAlignment="Center"/>
    </Grid>
</Page>

按钮处理程序:
private void ShowMapBtn_Clicked(object sender, RoutedEventArgs e)
{
    var mapContainer = MyMap.Parent as FrameworkElement;
    MyMap.Width = mapContainer.ActualWidth;
    MyMap.Height = mapContainer.ActualHeight;

    //Hide the button
    (sender as Button).Visibility = Visibility.Collapsed;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接