.NET MAUI中CollectionView能否绑定对象的只读成员变量?
.NET MAUI绑定readonly成员变量的可行方案
.NET MAUI的数据绑定机制仅支持绑定属性,直接绑定readonly成员变量(字段)不会生效,也不会抛出运行时错误,这就是你遇到的问题根源。以下是两种可行的解决方式:
封装为只读属性(推荐方案)
把readonly字段包装成一个只读属性,绑定系统就能识别并正常显示值。示例代码如下:// 原readonly字段 public readonly string MyReadOnlyField; // 封装为只读属性 public string MyReadOnlyProperty => MyReadOnlyField;之后在XAML中绑定这个属性即可:
<Label Text="{Binding MyReadOnlyProperty}" />使用包装类(可选)
如果无法修改原有类的结构,可以创建一个包装类,持有原对象实例并暴露对应字段的属性:public class MyWrapper { private readonly OriginalClass _original; public MyWrapper(OriginalClass original) => _original = original; public string MyReadOnlyProperty => _original.MyReadOnlyField; }绑定的时候将集合替换为包装类的实例集合即可。
另外需要注意:如果readonly字段的值是在对象构造完成后才被赋值的,那么对应的只读属性需要实现INotifyPropertyChanged接口并触发属性变更通知,否则界面不会更新显示最新值;如果是构造时就确定的常量值,无需额外处理即可正常显示。
内容的提问来源于stack exchange,提问作者Andy Johnson
相关产品推荐
相关产品推荐

