跨平台API
.NET MAUI 通过单个 API 提供 60 多个平台功能,例如:打开默认地图应用程序
将 IMap
注入到我们的 Monkey Details ViewModel
中:
IMap map;
public MonkeyDetailsViewModel(IMap map)
{
this.map = map;
}
打开 MonkeyDetailsViewModel.cs
文件并添加一个名为 OpenMap
的方法,该方法调用 Map
API,将猴子的位置传递给它:
[RelayCommand]
async Task OpenMap()
{
try
{
await map.OpenAsync(Monkey.Latitude, Monkey.Longitude, new MapLaunchOptions
{
Name = Monkey.Name,
NavigationMode = NavigationMode.None
});
}
catch (Exception ex)
{
Debug.WriteLine($"Unable to launch maps: {ex.Message}");
await Shell.Current.DisplayAlert("Error, no Maps app!", ex.Message, "OK");
}
}
更新 DetailsPage.xaml UI
在猴子的名字上方,让我们添加一个调用 OpenMapCommand
的按钮。
<Button Text="Show on Map"
Command="{Binding OpenMapCommand}"
HorizontalOptions="Center"
WidthRequest="200"
Margin="8"
Style="{StaticResource ButtonOutline}"/>
<Label Style="{StaticResource MediumLabel}" Text="{Binding Monkey.Details}" />
运行应用程序,导航到一只猴子,然后按在地图上显示以在特定平台上去启动地图应用程序。
针对特定平台
除了访问跨平台设备 API,.NET MAUI 还包括特定于平台的集成。 如果一直在带有凹槽的 iOS 设备上运行 Monkey Finder 应用程序,可以注意到底部的按钮与设备底部的栏重叠。 iOS 有安全区域的概念,必须以编程方式设置它。
打开 MainPage.xaml
并为 iOS 细节添加一个新的命名空间:
xmlns:ios="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;assembly=Microsoft.Maui.Controls"
在 ContentPage
节点上,可以设置以下属性:
ios:Page.UseSafeArea="True"
在 iOS 模拟器或设备上重新运行应用程序,可以注意到按钮已自动上移。