2015-11-24 67 views
1

Adding MapControl in xaml results in a "Catastropic failure"相同的問題,在不引起災難性異常的情況下,bing地圖控件無法摺疊。更糟的是,只需將一張地圖放入一個摺疊的容器中,它也會崩潰。這意味着每個父母,祖父母等都必須使用後面的代碼摺疊。無緣無故地打破mvvm模式只是爲了顯示和隱藏地圖。WP 8.1 Bing Map災難性故障

是否有人找到了解決方法? MS真的很瘋狂,即使他們知道它沒有像預期的那樣行爲,他們也沒有修復自己的控制。 任何幫助表示讚賞!

回答

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; 
} 
+0

哦,好像我吸引了必應地圖的大傢伙!也許你是少數能找到解決方法的人的一部分。你有辦法看這個奇怪的行爲嗎?只需創建一個新的Phone 8.1項目(不是Silverlight)並向主頁面添加摺疊的地圖應該會引發異常。 – MakanWG

+0

我想出了一個解決方法,並用它更新了我的答案。 – rbrundritt

+0

這將適用於您希望從其容器隱藏地圖本身的特定情況。但讓我們假設該地圖是UserControl的一部分,該UserControl也是另一個UserControl的一部分。通過綁定(和轉換器)摺疊其中一個是不可能的,因爲它會觸發異常。順便說一句,通過代碼直接摺疊地圖將始終工作。通過xaml摺疊它或摺疊它的任何祖先容器將始終引發異常。 – MakanWG

相關問題