Xamarin CollectionView绑定报错:ViewModel中找不到fromICAO属性如何解决
问题原因
这个报错是因为CollectionView的DataTemplate没有指定对应的数据类型,绑定引擎默认将模板内的绑定上下文定位到了页面绑定的ViewModel上,而不是Plans集合内的PlanToFirestoreModel元素,所以找不到fromICAO等属于Model类的属性。
解决方法
第一步:添加Model命名空间引用
在你的XAML页面根标签(比如ContentPage标签)里,添加你PlanToFirestoreModel所在的命名空间引用,示例如下:
<ContentPage ... 其他原有属性 xmlns:models="clr-namespace:你的项目名.Model类所在的命名空间">
请将你的项目名.Model类所在的命名空间替换为你实际项目中PlanToFirestoreModel对应的命名空间路径。
第二步:给DataTemplate指定DataType
修改DataTemplate标签,添加x:DataType属性指定模板绑定的实体类型:
<DataTemplate x:DataType="models:PlanToFirestoreModel"> <!-- 原有模板内的代码保持不变 --> </DataTemplate>
修改完成后重新编译运行即可解决绑定报错问题。
其他可选检查项
- 确认你的页面
BindingContext已经正确绑定到PlansViewModel的实例,你提到已经可以识别Plans集合,该项一般不需要额外调整。 - 你当前代码中
FillData方法用了async void,该写法仅适用于事件处理程序,建议调整为async Task规范写法避免潜在的异常捕获问题。
内容的提问来源于stack exchange,提问作者Mercyfon
相关产品推荐
相关产品推荐

