我正在玩dotnet Maui的新Map控件。一个简单的例子是让XAML像这样:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:maps="clr-namespace:Microsoft.Maui.Controls.Maps;assembly=Microsoft.Maui.Controls.Maps"
x:Class="SaRM.MainPage">
<maps:Map x:Name="map" MapType="Street"/>
</ContentPage>
这样我就可以访问cs文件后面的代码中的“map”:
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
protected override void OnAppearing()
{
var location = new Location(36.96, -122.0194);
var mapSpan = new MapSpan(location, 0.01, 0.01);
map.MoveToRegion(mapSpan);
}
}
我希望有一个ViewModel来与XAML交互,但如果我创建一个ViewModel类如下:
public class MainViewModel
{
public Map map;
public MainViewModel()
{
var location = new Location(36.96, -122.0194);
var mapSpan = new MapSpan(location, 0.01, 0.01);
map.MoveToRegion(mapSpan);
}
}
我在“Map”上看到一个错误:
"Cannot declare variable of static type 'Map'"
这是因为Map是一个静态类,在这种情况下,我怎么才能有一个绑定到XAML中Map元素的ViewModel类呢?
更新:以下是Microsoft.Maui.Maps中的Map类定义:
1条答案
按热度按时间but5z9lq1#
UI元素和UI元素类型不应该在您的ViewModel中直接引用,正如FreakyAli所说。
因为
Map
是一个UI元素,所以我们不能直接在ViewModel中使用它。您可以在
YourPage.xaml
中定义Map,并在ViewModel上添加其他必要的数据。例如:
可以在
YourPage.xaml
中添加Map
,在视图模型中添加Positions
并将
map.MoveToRegion
添加到YourPage.xaml.cs
中并定义viewModel,如下所示:
有关详细信息,您可以查看文档:Map .
以上代码来自官方样例WorkingWithMaps,请注意PinItemsSourcePage.xaml和PinItemsSourcePageViewModel.cs。