You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin ListView单元格显示异常:滑块调行高不生效+新增项不显示

解决ListView滑块调整行高不更新、新增项不显示的问题

我来帮你搞定这两个头疼的问题,咱们一个一个说:

1. 滑块调整RowHeight后单元格尺寸不更新

你现在直接给lstView.RowHeight赋值的方式,有时候不会触发Xamarin.Forms的UI自动刷新。解决办法很简单,赋值后手动强制ListView重新布局就行:

private void Slider_ValueChanged(object sender, ValueChangedEventArgs e)
{
    lstView.RowHeight = (int)e.NewValue;
    // 手动触发布局刷新,让新行高立刻生效
    lstView.ForceLayout();
}

添加ForceLayout()后,滑块拖动时ListView会根据新的RowHeight重新渲染所有单元格,尺寸就能实时更新了。

2. 新增列表项后无法显示(调试确认数据已存在)

这个问题几乎可以肯定是数据源类型的锅——你大概率用了普通的List<T>,而不是ObservableCollection<T>。普通List没有实现INotifyCollectionChanged接口,UI根本不知道数据源发生了变化,自然不会更新显示。

解决步骤:

  • 把数据源替换成ObservableCollection<T>
  • 确保ListView的ItemsSource绑定或指向这个集合对象

举个简单的示例:

// 声明数据源时改用ObservableCollection
private ObservableCollection<YourItemType> _listItems = new ObservableCollection<YourItemType>();

public RootPage()
{
    listView = new ListView()
    {
        ItemsSource = _listItems,
        // 其他布局配置...
    };
}

// 新增项时直接操作这个集合
private void AddNewItem()
{
    _listItems.Add(new YourItemType());
}

这样只要集合内容变化,UI会自动同步更新,新增的项就能立刻显示出来。如果已经用了ObservableCollection还是没效果,要检查是不是不小心重新实例化了集合(比如又new了一个ObservableCollection赋值给_listItems),这种情况要保证始终操作同一个集合对象,或者重新设置一次ItemsSource。


内容的提问来源于stack exchange,提问作者StriBog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:33:48