Xamarin Essentials 的问题

问题描述

我现在正在编写我的第三个 xamarin 形式的初学者程序,并想编写一个加速度计 我们知道 API Xamarin Essentials 正在完成计算工作,但是当我插入诸如 Accelerometer.IsMonitoring 之类的东西时,它不知道 IsMonitoring 即使它必须知道它我在这里做错了什么是我在xaml 数据,它无法识别 IsMonitoring 和 Start 并给我错误:命名空间中不存在类型或命名空间名称“Start”:Accelerometer
代码如下:

private void ButtonStart_Clicked(object sender,EventArgs e)
    {
        if (Accelerometer.IsMonitoring)
            return;
        Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
        Accelerometer.Start(SensorSpeed.UI);
    }

 And this is the xaml code:
<Grid>
    <Grid.ColumnDeFinitions>
        <ColumnDeFinition Width="*"/>
        <ColumnDeFinition Width="*"/>
        
    </Grid.ColumnDeFinitions>
    <Label Grid.Row="0" Grid.ColumnSpan="2" x:Name="LabelX"/>
    <Label Grid.Row="1" Grid.ColumnSpan="2" x:Name="LabelY"/>
    <Label Grid.Row="2" Grid.ColumnSpan="2" x:Name="LabelZ"/>
    
    <Button Grid.Row="3" Grid.ColumnSpan="0" x:Name="ButtonStart" Text="Start" Clicked="ButtonStart_Clicked"/>
    <Button Grid.Row="3" Grid.ColumnSpan="1" x:Name="ButtonStop" Text="Stop" Clicked="ButtonStop_Clicked"/>
    
</Grid>

我做错了什么或遗漏了什么

解决方法

因为您的项目名为 Accelerometer,所以它无法区分您的主 App 命名空间和 Xamarin.Essentials Accelerometer

您可以通过重命名项目、为 Xamarin Essentials 创建别名或完全限定类名来解决此问题

private void ButtonStart_Clicked(object sender,EventArgs e)
    {
        if (Xamarin.Essentials.Accelerometer.IsMonitoring) return;

        Xamarin.Essentials.Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
        Xamarin.Essentials.Accelerometer.Start(SensorSpeed.UI);
    }