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

Xamarin Forms更新ListView Itemsource后第一行RadioButton不显示问题排查

问题根因

导致删除后首次新增项RadioButton不显示的核心原因有两个:

  • Grid列未显式指定宽度规则:你定义的两列ColumnDefinition默认都是*等宽分配,当ListView从空列表状态首次加载新项时,不均等行高的测量逻辑出现异常,第一列宽度被压缩为0,RadioButton被完全遮挡,仅第二列的金额Label正常渲染。第二次新增项时列表已经有了行高参考,测量恢复正常,因此两项都能正常显示。
  • RadioButton全局GroupName冲突:所有行的RadioButton共用了固定的GroupNameL1,配合ListView默认的单元格复用机制,当原有列表项被删除后,复用旧单元格的RadioButton状态未被正确重置,也会触发渲染异常。

修复方案

  1. 显式指定Grid列的宽度分配,避免测量异常,比如第一列占满剩余空间,第二列自适应内容宽度:
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
  1. 将RadioButton的GroupName绑定到当前行的数据源,避免全局同组冲突:
<RadioButton Padding="10,0,0,0" Grid.Column="0" BackgroundColor="White" TextColor="Black"
             GroupName="{Binding .}" Content="{Binding Description}"/>
  1. 可选优化:给ListView指定复用缓存策略,提升列表性能同时避免复用状态异常:
<ListView x:Name="lvTest" SeparatorVisibility="None" VerticalOptions="CenterAndExpand"
          HorizontalOptions="StartAndExpand" HasUnevenRows="True" BackgroundColor="#ffffff"
          CachingStrategy="RecycleElement">

另外请确认你的CommonModel类已经实现了INotifyPropertyChanged接口,避免绑定更新不及时的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:18:01