WP 8.1 Bing Map灾难性故障

时间:2015-11-24 17:21:48

标签: windows-phone-8.1 bing-maps

Adding MapControl in xaml results in a "Catastropic failure"相同的问题,bing地图控件无法在不造成灾难性异常的情况下折叠。更糟糕的是,只需将地图放在折叠的容器中,它也会崩溃。这意味着每个父母,祖父母等等都必须使用后面的代码进行折叠。毫无理由地打破mvvm模式只是为了显示和隐藏地图。

是否有人找到了解决方法?很奇怪,即使MS知道它没有按照预期行事,MS也没有长时间修复自己的控制权。 任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

这是我第一次听说这个问题。值得注意的是,WP8.1中的地图控件不是由微软创建的,而是由诺基亚创建的。在Windows 10中,微软采用了诺基亚控制,并结合了Windows 8地图控件的功能,使其更加稳定。

更新: 我看过这个问题。由于地图控件是用本机C ++编写的,并且抛出的错误具有显示为“?”的无法访问的属性,因此要弄清楚导致错误的原因并不容易。也就是说,我确实找到了解决方法。折叠控件与给控件的宽度和高度为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;
}