MAUI双向绑定从其他属性设置时多次触发问题排查
MAUI双向绑定Entry/Editor时属性Set被莫名调用的问题
本人此前从事驱动开发,刚涉足应用开发,对MAUI绑定模式理解有限。在MAUI项目中,单向绑定Label时功能正常,但将控件替换为Editor/Entry并使用双向绑定后,出现异常行为:扫码后通过正则解析为8个字段并赋值,目标属性的OnPropertyChanged会额外触发4-5次,Set方法接收到的值为扫描文本的片段组合(如"2031523969.0 LB 14")。
已尝试的排查方案
- 将Label替换为Editor后首次发现问题,逐步缩减为仅保留一个Editor控件,问题依旧存在
- 显式指定绑定模式为
TwoWay,无效果 - 使用Entry控件替代Editor,问题表现完全一致
- 更换不同属性绑定Entry,所有绑定的属性均出现相同异常
- 修改Barcode类中
ScannedText的Set逻辑,先设置私有字段再统一触发OnPropertyChanged,无效 - 在属性Set中增加数值变更判断,跳过不必要的
OnPropertyChanged触发,问题仍未解决
架构说明
MauiProgram.cs将DataWedge扫描数据传递给HelperModel.ScannedText属性,通过断点确认每次扫描仅接收一次完整数据。
相关代码片段
Barcode类(单例)
public sealed class Barcode : INotifyPropertyChanged { // 类代码片段 }
MainPage构造代码
Barcode barcode = Barcode.GetInstance(); public MainPage() { InitializeComponent(); this.BindingContext = barcode; }
MainPage.xaml绑定代码
<!-- MainPage.xaml代码片段 --> <Entry x:Name="BoxNum" Text="{Binding BoxNo, Mode=TwoWay}" .../>
目前确认问题并非无限循环,而是Set方法被莫名调用,传入值为扫描文本的片段,暂时无法定位具体原因。
内容的提问来源于stack exchange,提问作者zebano
相关产品推荐
相关产品推荐

