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

Xamarin Android模拟器ScrollView嵌套Grid仅绘制第一页内容如何解决

问题根因
  • UI操作未执行在主线程:异步HTTP请求的回调默认运行在后台线程,虽然你已经完成了Label和行定义的添加逻辑,但非UI线程的UI修改不会触发完整的渲染流程,首屏内容刚好在初始渲染范围内被绘制,超出首屏的内容没有触发重绘所以看不到。
  • 批量修改Grid内容后未触发布局刷新:批量添加完所有子元素后,Grid没有主动通知父容器ScrollView更新内容渲染范围,也会导致超出首屏的内容没有被绘制。
修复方案

将Grid行定义添加、Label添加的所有UI操作逻辑都包入Xamarin Forms的UI线程调度逻辑中,添加完成后强制Grid刷新布局即可,修改后的代码片段如下:

// 原有获取baseList的逻辑不变
List<Base> baseList = JsonConvert.DeserializeObject<List<Base>>(data).OrderBy(b =>b.BaseName).ToList();
string message = $"Retrieved {baseList.Count()} bases.";
await DisplayAlert("Result", message, "Close");

// 新增:将所有UI操作调度到主线程执行
Device.BeginInvokeOnMainThread(async () =>
{
    Grid theGrid = BasesGrid;
    var rowDefinitions = theGrid.RowDefinitions;
    for (int i = 0; i < baseList.Count(); i++)
    {
        RowDefinition rowDef = new RowDefinition { Height = 20 };
        rowDefinitions.Add(rowDef);
    }

    await DisplayAlert("Row count", $"The grid has {BasesGrid.RowDefinitions.Count()} rows.", "Close");

    try
    {
        for (int i = 0; i < baseList.Count(); i++)
        {
            BasesGrid.Children.Add
            (
                new Label
                {
                    Text = baseList[i].BaseName,
                    HorizontalOptions = LayoutOptions.Start
                },
                0, i
            );
            BasesGrid.Children.Add
            (
                new Label
                {
                    Text = baseList[i].Status,
                    HorizontalOptions = LayoutOptions.Start
                },
                1, i
            );
        }
        // 强制Grid刷新布局,通知父容器ScrollView更新内容范围
        BasesGrid.ForceLayout();
    }
    catch (Exception ex)
    {
        await DisplayAlert("Error", $"Failed to add row data: {ex.Message}", "Close");
    }
});

可选优化

如果需要进一步兼容极端场景,可以给XAML中的Grid补充VerticalOptions配置:

<Grid Margin="10"
      x:Name="BasesGrid"
      VerticalOptions="FillAndExpand">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:06:03