SuperAPI AI 工具集

maui-data-binding

编程与开发

查看项目

更新于 10-16 03:04

技能介绍

用途:为 .NET MAUI 项目编写数据绑定代码提供规范指导,将 UI 控件连接到 ViewModel 属性,兼顾编译期安全、正确的变更通知与较低开销。首选编译绑定,并把绑定警告视为编译错误。

适用场景:为新页面或已有页面添加 x:DataType 编译绑定;实现 INotifyPropertyChanged 或使用 CommunityToolkit 的 ObservableObject;创建或使用 IValueConverter / IMultiValueConverter;为控件属性选择正确的 BindingMode;在 XAML 或代码隐藏中设置 BindingContext;使用相对绑定(Self、AncestorType、TemplatedParent);应用 StringFormat、FallbackValue、TargetNullValue;使用 SetBinding 与 lambda 编写 AOT 安全绑定(.NET 9+)。

不适用场景:CollectionView 布局与模板、Shell 导航参数、服务注册与依赖注入,以及属性变更触发的动画,应分别使用对应专门技能或内置 API。

主要规则:x:DataType 只放在绑定作用域开始处,即页面/视图根节点及每个 DataTemplate;DataTemplate 需自带 x:DataType,不能继承外层作用域,否则会触发 XC0024。XC0022 表示绑定缺少 x:DataType 而回退到反射,XC0023 表示显式 x:DataType 为 null,XC0025 表示绑定带有显式 Source 未被编译。可在 .csproj 中启用 MauiEnableXamlCBindingWithSourceCompilation,并设置 WarningsAsErrors 为 XC0022;XC0025。

能力要点:编译绑定比反射绑定快约 8–20 倍,且为 NativeAOT/裁剪所需;绑定模式中 OneWay、TwoWay、OneWayToSource、OneTime 各有默认与使用场合,仅在需要覆盖默认值时显式指定;属性路径支持点号与索引器;值转换器需实现 Convert 与 ConvertBack,ConverterParameter 始终按字符串传入;MultiBinding 配合 IMultiValueConverter 组合多个来源;支持 Self、AncestorType、TemplatedParent 相对绑定以及 StringFormat、FallbackValue、TargetNullValue。

线程与常见问题:MAUI 会自动把 PropertyChanged 调度到 UI 线程,但后台线程直接增删 ObservableCollection 可能崩溃,需用 MainThread.BeginInvokeOnMainThread;避免绑定非公共属性、在热路径中使用复杂转换器链,以及用 x:DataType="x:Object" 规避编译绑定。资料未提供具体收费、价格及平台支持信息。