该技能面向需要在 .NET MAUI 中为视觉元素接入原生平台行为的场景。核心原则是让 Handler 只专注于视图;非视觉 API 应通过依赖注入交给平台服务,庞大的原生 SDK 应通过精简绑定加服务门面封装。
主要能力包括:区分使用 AppendToMapping、PropertyMapper、CommandMapper 和 ViewHandler;将渲染器迁移中的订阅与初始化映射到 ConnectHandler,清理映射到 DisconnectHandler;通过类型守卫把映射改动限定到目标控件而非所有控件。
选择方式上,全局调整某控件优先在 MauiProgram.cs 用 EntryHandler.Mapper.AppendToMapping 或对应具体控件的映射器;仅调整特定实例则子类化控件并用 if (view is MyControl) 守卫;新增可复用跨平台控件用自定义 ViewHandler;绑定属性变化用 PropertyMapper,播放/暂停/滚动等命令用 CommandMapper;相机、传感器、支付、健康或后台 API 用 DI 平台服务;封装第三方 Android/iOS/macOS SDK 用精简绑定加平台服务门面。
工作流:先检查目标框架与现有 UI 架构,定义跨平台视图 API(可绑定属性、命令、事件),再选择全局映射定制、子类范围定制或完整自定义 Handler,在 partial 文件或 #if 条件块中按项目实际支持平台放置原生实现,随后在 MauiProgram.cs 注册。
注册示例: builder.ConfigureMauiHandlers(handlers => { handlers.AddHandler<CameraPreview, CameraPreviewHandler>(); });
在 ConnectHandler 订阅原生事件并分配原生资源;在 DisconnectHandler 取消订阅、停止计时器、清空委托,只释放 Handler 自己拥有的原生对象,并以 base.DisconnectHandler(platformView) 作为最后一句。映射方法应保持幂等,可能被多次调用;通过类型而非宽泛 try/catch 校验 PlatformView 与 VirtualView。渲染器迁移时把创建原生控件的逻辑移入 CreatePlatformView,把 OnElementChanged 订阅移入 ConnectHandler,把 OnElementPropertyChanged 的 switch 改为 PropertyMapper 条目,渲染器动作改为 CommandMapper 或调用 Handler?.Invoke。
限制:需为每个目标框架分别构建并验证行为;平台命名空间不应泄漏到共享代码;非视觉的 SDK 工作不应隐藏在 Handler 中。其他收费、平台或效果信息资料暂未提供。