Это первый раз, когда я слышал об этой проблеме. Стоит отметить, что управление картой в 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;
}
Ой, кажется, я привлек большой парень карты Бинга! Возможно, вы часть немногих людей, которые могут найти обходной путь. У вас есть способ посмотреть/сделать что-то в этом странном поведении? Просто создание нового проекта Phone 8.1 (а не Silverlight) и добавление свернутой карты на главную страницу должно вызвать исключение. – MakanWG
Я придумал обходное решение и обновил свой ответ. – rbrundritt
Это будет работать в очень конкретном случае, когда вы хотите скрыть карту из контейнера. Но предположим, что карта является частью UserControl, которая также является частью другого UserControl. Невозможно свернуть один из них через привязку (и конвертер), потому что это вызовет исключение. Кстати, сведение карты напрямую по коду всегда будет работать. Свертывание его с помощью xaml или свертывание любого из его контейнеров-предков всегда вызовет исключение. – MakanWG