Xamarin中ListView绑定单条数据时ViewCell重复显示如何解决?
问题根因
- Xamarin.Forms 的
ListView.ItemsSource仅支持绑定实现IEnumerable接口的集合类型,你传入的cartUserInfo是字符串类型,而字符串本身是单个字符的可枚举集合,因此 ListView 会把字符串的每一个字符作为独立条目渲染,最终出现多个重复 ViewCell,和你存储的业务数据条数无关,属于绑定类型不匹配导致的问题。 - 你当前 XAML 中 Label 的 Text 写死为固定值
11,所以所有条目展示内容完全相同,进一步强化了“重复”的视觉效果。
修复方案
根据你的使用场景二选一即可:
场景1:仅需展示单条数据,不需要列表能力
直接移除 ListView 改用普通 Label 承载内容即可:
XAML 代码调整:
<ContentPage.Content> <StackLayout> <Label x:Name="cartInfoLabel" TextColor="#848484" /> </StackLayout> </ContentPage.Content>
后台代码调整:
public Test() { InitializeComponent(); var cartUserInfo = Preferences.Get("CartUser", "defaultcart"); cartInfoLabel.Text = cartUserInfo; }
场景2:后续需要扩展为多条数据,保留 ListView 组件
把单条字符串包装为单元素集合后再赋值给 ItemsSource,同时修改 Label 绑定逻辑展示实际内容:
XAML 中 Label 部分调整:
<Label TextColor="#848484" Text="{Binding .}" />
后台代码调整:
public Test() { InitializeComponent(); var cartUserInfo = Preferences.Get("CartUser", "defaultcart"); // 将单条数据包装为集合类型符合 ListView 绑定要求 myCarts.ItemsSource = new List<string> { cartUserInfo }; }
内容的提问来源于stack exchange,提问作者Chim Di Tru
相关产品推荐
相关产品推荐

