gpt4 book ai didi

c# - 如何更改VM中 map 的MapType?

转载 作者:行者123 更新时间:2023-12-05 06:49:08 36 4
gpt4 key购买 nike

我有一张 map 想从 VM 添加。当您单击按钮时,我尝试添加命令 MapType 将被更改。但它不起作用。我知道如何在代码隐藏中创建它。但我需要 VM

ContentView
AbsoluteLayout.LayoutBounds="0, 0, 1, 1"
AbsoluteLayout.LayoutFlags="All"
Content="{Binding Map}" />

虚拟机

        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;

}

当我点击按钮 map 没有改变MapType.pls帮助

最佳答案

I have a map which want to add from VM. I tried to add command when you click on button MapType will be changed.but it does not working.I know how to make it in codebehind.but I need VM

如果你想改变viewmodel中的Map.Maptype,你可以看下面的代码。

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

关于c# - 如何更改VM中 map 的MapType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66645787/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com