Adding MapControl in xaml results in a “Catastropic failure”

后端 未结 2 1735
旧巷少年郎
旧巷少年郎 2021-01-17 14:12

I am creating an universal application using Visual Studio Ultimate 2013 Version 12.0.30501.00 Update 2. I am getting Catastrophic failure on adding Map Control in my xaml l

相关标签:
2条回答
  • 2021-01-17 14:42

    I've come up with a workaround for this. Instead of using visibility you can use the maps height/width properties to hide/show the map. Set them to 0 when you want to hide it, and set it to the parents width/height when you want to show it. Here is a code sample:

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

    Button 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;
    }
    
    0 讨论(0)
  • 2021-01-17 14:56

    I've tested your example and indeed there is such a problem also on my Phone.

    As I have checked it is possible to set Collapsed from code - so as a workaround:

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

    In the code behind:

    public MainPage()
    {
        this.InitializeComponent();
        this.Loaded += (sender, e) => myMap.Visibility = Visibility.Collapsed;
    }
    
    0 讨论(0)
提交回复
热议问题