Tengo un mapa que quiero agregar desde VM. Intenté agregar un comando cuando haces clic en el botón Se cambiará MapType. Pero no funciona. Sé cómo hacerlo en código subyacente. Pero necesito VM
ContentView AbsoluteLayout.LayoutBounds="0, 0, 1, 1" AbsoluteLayout.LayoutFlags="All" Content="{Binding Map}" />máquina virtual
public Map Map { get; set; } public Command StandartMapCommand { get; set; } public Command SatelliteMapCommand { get; set; } public Command HybridMapCommand { get; set; } public MasterPageVM() { Map = new Map(); StandartMapCommand = new Command(StandardSelected); SatelliteMapCommand = new Command(SatelliteSelected); HybridMapCommand = new Command(HybridSelected); } public void StandardSelected() { Map.MapType = Xamarin.Forms.Maps.MapType.Street; } public void HybridSelected() { Map.MapType = Xamarin.Forms.Maps.MapType.Hybrid; } public void SatelliteSelected() { Map.MapType = Xamarin.Forms.Maps.MapType.Satellite; }Cuando hago clic en el mapa de botones no cambia la ayuda de MapType.pls
Tengo un mapa que quiero agregar desde VM. Intenté agregar un comando cuando haces clic en el botón Se cambiará MapType. Pero no funciona. Sé cómo hacerlo en código subyacente. Pero necesito VM
Si desea cambiar Map.Maptype en el modelo de vista, puede consultar el siguiente código.
<ContentPage.Content> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <ContentView Grid.ColumnSpan="3" Content="{Binding Map}" /> <Button x:Name="btn1" Grid.Row="1" Command="{Binding StandartMapCommand}" Text="Street" /> <Button x:Name="btn2" Grid.Row="1" Grid.Column="1" Command="{Binding SatelliteMapCommand}" Text="Satellite" /> <Button x:Name="btn3" Grid.Row="1" Grid.Column="2" Command="{Binding HybridMapCommand}" Text="Hybrid" /> </Grid> </ContentPage.Content> public partial class Page1 : ContentPage { public Page1 () { InitializeComponent (); this.BindingContext = new MapViewModel(); } } public class MapViewModel { private Map _map; public Map Map { get { return _map; } set { _map = value; } } public Command StandartMapCommand { get; set; } public Command SatelliteMapCommand { get; set; } public Command HybridMapCommand { get; set; } public MapViewModel() { Map = new Map(); Position position = new Position(36.9628066, -122.0194722); MapSpan mapSpan = new MapSpan(position, 0.01, 0.01); Map.MoveToRegion(mapSpan); Map.Pins.Add(new Pin { Label = "Xamarin", Position = position }); StandartMapCommand = new Command(streetcommand); SatelliteMapCommand = new Command(Satellitecommand); HybridMapCommand = new Command(Hybridcommand); } private void streetcommand() { Map.MapType = MapType.Street; } private void Satellitecommand() { Map.MapType = MapType.Satellite; } private void Hybridcommand() { Map.MapType = MapType.Hybrid; } }