Xamarin使用DataTemplate渲染单个条目可选什么XAML控件?
解决方案
你可以直接使用ContentView控件来复用现有DataTemplate渲染单个对象,这是最适配该场景的方案,无需修改你已经定义好的UserTemplate:
<ContentView Content="{Binding Meeting.Owner}" ContentTemplate="{StaticResource UserTemplate}"/>
方案说明
你之前用CollectionView无内容是因为ItemsSource仅支持实现IEnumerable接口的集合类型,单个用户对象不属于集合,所以不会触发渲染。
而ContentView的属性刚好匹配你的需求:
Content属性支持直接绑定单个实体对象,刚好适配Meeting.Owner的单个用户数据结构ContentTemplate属性可以直接关联你已经定义的UserTemplate资源,模板内部的绑定逻辑完全不需要调整,开箱即用
如果不想替换控件,也可以在ViewModel层做适配:把单个Owner对象封装为只有一个元素的集合,再绑定到CollectionView的ItemsSource即可,示例逻辑如下:
// ViewModel中新增集合属性 public IEnumerable<User> OwnerList => new List<User> { Meeting.Owner };
然后修改原有CollectionView的绑定逻辑:
<CollectionView ItemsSource="{Binding OwnerList}" ItemTemplate="{StaticResource UserTemplate}"/>
内容的提问来源于stack exchange,提问作者Maayan Kestler
相关产品推荐
相关产品推荐

