2015-11-24 4 views
1

Тот же вопрос, что и Adding MapControl in xaml results in a "Catastropic failure", управление картой bing не может быть свернуто без возникновения катастрофического исключения. Хуже того, просто поместите карту внутри смятого контейнера, и она тоже рухнет. Это означает, что каждый родитель, дедушка и бабушка и т. Д. ДОЛЖНЫ быть свернуты с использованием кода. разбивая шаблон mvvm, без причины просто отображать и скрывать карту.WP 8.1 Bing Map Катастрофический сбой

Есть ли кто-нибудь, кто нашел обходное решение? Это безумие, что MS не исправляла свой собственный контроль в течение такого долгого времени, даже если они знают, что он не ведет себя так, как предполагалось. Любая помощь приветствуется!

ответ

1

Это первый раз, когда я слышал об этой проблеме. Стоит отметить, что управление картой в WP8.1 не было создано Microsoft, а Nokia. В Windows 10 Microsoft взяла элемент управления Nokia и в сочетании с функциями управления картой 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. Невозможно свернуть один из них через привязку (и конвертер), потому что это вызовет исключение. Кстати, сведение карты напрямую по коду всегда будет работать. Свертывание его с помощью xaml или свертывание любого из его контейнеров-предков всегда вызовет исключение. – MakanWG

Смежные вопросы