L'ajout de MapControl dans xaml entraîne une "défaillance Catastropique""

je crée une application universelle en utilisant Visual Studio Ultimate 2013 Version 12.0.30501.00 mise à jour 2. J'obtiens un échec catastrophique en ajoutant le contrôle de carte dans mon xaml comme ceci

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

j'ai ajouté

xmlns:Maps="using:Windows.UI.Xaml.Controls.Maps" 

dans l'en-tête de page et ajouté la capacité 'location' au dossier de manifeste d'application. Quelqu'un a connu le même problème? Vous pouvez tester le sien en créant un exemple d'application et ajouter seulement MapControl. Merci de m'aider à résoudre ce question.

le problème est également observé dans les applications Windows Phone 8.1 normales. Suis-je manqué quelque chose?

Le problème est observée lorsque j'essaye d'exécuter l'application dans l'émulateur.

L'erreur ne montre aucune autre information juste "défaillance catastropique", rien d'autre.

peut-être que je vais essayer de ré-installer Visual Studio. Mais un fait plus intéressant est que je pourrais le faire fonctionner si Je ne cache pas le contrôle de la carte dans le page.

pouvez-vous le tester en créant un exemple d'application et en faisant simplement la visibilité de contrôle de carte='effondré'?

<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>

et le problème est observé dans plus d'un PC.

11
demandé sur Vinoth Selvaraj 2014-06-14 02:37:09

2 réponses

j'ai testé votre exemple, et en effet il y a un problème aussi sur mon Téléphone.

comme j'ai vérifié, il est possible de définir Collapsed à partir du code - donc comme une solution de contournement:

<Grid>
   <Maps:MapControl Name="myMap" Visibility="Visible" />
</Grid>

dans le code derrière:

public MainPage()
{
    this.InitializeComponent();
    this.Loaded += (sender, e) => myMap.Visibility = Visibility.Collapsed;
}
6
répondu Romasz 2014-06-14 10:02:47

j'ai trouvé une solution de contournement pour ce. Au lieu d'utiliser la visibilité, vous pouvez utiliser les propriétés hauteur/largeur des cartes pour masquer/afficher la carte. Les mettre à 0 si vous voulez le cacher, et les parents largeur/hauteur lorsque vous voulez le montrer. Voici un exemple de code:

<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>

Bouton Handler:

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;
}
1
répondu rbrundritt 2015-11-25 19:50:37