Я проверяю это. Я обнаружил, что эта проблема только что произошла в элементах управления карты. Если мы использовали Button
Entry
или Image
, все они не будут перезагружаться при изменении шаблона управления. Вот два запущенных GIF.
используется Button
Entry
или Image
![enter image description here](https://i.stack.imgur.com/FBzcB.gif)
использованная карта
![enter image description here](https://i.stack.imgur.com/VqVR0.gif)
Если вы все еще хотите достичь этого результата, мой обходной путь не использовать это ControlTemplate
. Просто используйте Gird, чтобы поставить контроль. Обновление местоположения по карте API. Здесь работает GIF. ![enter image description here](https://i.stack.imgur.com/GoMXF.gif)
Вот мой макет.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.1*" />
<RowDefinition Height="0.8*" />
<RowDefinition Height="0.1*" />
</Grid.RowDefinitions>
<BoxView x:Name="MyBoxView" HeightRequest="50" Color="Red" VerticalOptions="Start" Grid.Row="0"/>
<!--<ContentPresenter Grid.Row="1" />-->
<maps:Map x:Name="myMap" Grid.Row="1" >
<x:Arguments>
<maps:MapSpan>
<x:Arguments>
<maps:Position>
<x:Arguments>
<x:Double>36.9628066</x:Double>
<x:Double>-122.0194722</x:Double>
</x:Arguments>
</maps:Position>
<x:Double>0.01</x:Double>
<x:Double>0.01</x:Double>
</x:Arguments>
</maps:MapSpan>
</x:Arguments>
</maps:Map>
<StackLayout Orientation="Horizontal" VerticalOptions="End" Grid.Row="2">
<Button Text="Sub" BackgroundColor="Red" Clicked="OpenSubTemplate_Clicked" HorizontalOptions="FillAndExpand" />
<Button Text="Main" BackgroundColor="Blue" Clicked="OpenMainTemplate_Clicked" HorizontalOptions="FillAndExpand" />
</StackLayout>
</Grid>
Вот мой фоновый код.
void OpenSubTemplate_Clicked(object sender, System.EventArgs e)
{
MyBoxView.Color=Color.Red;
myMap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(47.6368678, -122.137305), Distance.FromMiles(1.0)));
}
void OpenMainTemplate_Clicked(object sender, System.EventArgs e)
{
MyBoxView.Color = Color.Blue;
myMap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(36.9628066, -122.0194722), Distance.FromMiles(1.0)));
}