.NET MAUI中CameraBarcodeReaderView找不到Handler的排查求助
问题:HandlerNotFoundException 找不到 CameraBarcodeReaderView 的处理器
我遇到了如下错误,但确认自己的XAML与C#文件配置无误:
Microsoft.Maui.Platform.HandlerNotFoundException: 'Handler not found for view ZXing.Net.Maui.Controls.CameraBarcodeReaderView.'
我推测这是CameraBarcodeReaderView对应的处理器未被找到,但相关配置似乎已存在,想请教问题出在哪里?
相关代码:
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:zxing="clr-namespace:ZXing.Net.Maui.Controls;assembly=ZXing.Net.MAUI" x:Class="ScanAndScoringMauiApp.Pages.ScanPage" Title="ScanPage"> <Grid RowDefinitions="1*,3*,1*"> <zxing:CameraBarcodeReaderView Grid.Row="0" Grid.RowSpan="3" x:Name="barcodeView" BarcodesDetected="barcodeView_BarcodesDetected" /> <Grid Grid.Row="0" BackgroundColor="#aa000000"> <Label Grid.Row="2" Text="Top text..." HorizontalOptions="Center" VerticalOptions="Center" TextColor="White" /> </Grid> <Grid Grid.Row="3" BackgroundColor="#aa000000" Padding="20" ColumnDefinitions="Auto,*,Auto"> <Button Text="🔄️" Grid.Column="0" BackgroundColor="#aa000000" CornerRadius="8" BorderColor="Black" Clicked="Button_Clicked" /> <zxing:BarcodeGeneratorView x:Name="barcodeGenerator" Grid.Column="1" HorizontalOptions="Center" VerticalOptions="Center" HeightRequest="100" WidthRequest="100" ForegroundColor="DarkBlue" Format="QrCode" Value="Bla" BarcodeMargin="1" /> <Button Text="💡" Grid.Column="2" BackgroundColor="#aa000000" CornerRadius="8" BorderColor="Black" Clicked="Button_Clicked_1" /> </Grid> </Grid> </ContentPage>
C#代码:
namespace ScanAndScoringMauiApp.Pages; public partial class ScanPage : ContentPage { public ScanPage() { InitializeComponent(); } private void Button_Clicked(object sender, EventArgs e) { } private void Button_Clicked_1(object sender, EventArgs e) { } private void barcodeView_BarcodesDetected(object sender, ZXing.Net.Maui.BarcodeDetectionEventArgs e) { } }
可能的解决步骤:
- 确认已正确安装ZXing.Net.MAUI NuGet包,确保所有目标平台都已引用该包
- 在
MauiProgram.cs的CreateMauiApp方法中添加ZXing的初始化代码:var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .UseBarcodeReader(); // 必须添加这行初始化代码 - 配置平台相机权限:
- Android:在
AndroidManifest.xml中添加相机权限声明:<uses-permission android:name="android.permission.CAMERA" /> - iOS:在
Info.plist中添加相机权限描述:<key>NSCameraUsageDescription</key> <string>需要访问相机进行扫码</string>
- Android:在
- 清理项目(删除bin/obj文件夹),然后重新生成解决方案
内容的提问来源于stack exchange,提问作者Wallace B. McClure
相关产品推荐
相关产品推荐

