MAUI-访问平台特性

2023-02-08 09:42 Wednesday3881min
CC BY 4.0(除特别声明和转载)

跨平台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 模拟器或设备上重新运行应用程序,可以注意到按钮已自动上移。

BuyMeACola