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

Picker控件未显示填充项及显示异常问题求助

问题排查:Picker控件数据绑定异常分析与解决

问题1:Picker点击后列表为空

核心原因

  • 未触发数据加载逻辑:ViewModel构造函数仅初始化了服务实例,但未调用DisplayPickupstationsAsync命令,导致PickupStations集合始终为空。
  • 方法返回值冗余:DisplayPickupstationsAsync返回ObservableCollection,但实际已直接操作类内的PickupStations字段,返回值无意义且可能影响命令执行逻辑。

修复方案

  1. 在ViewModel构造函数中启动数据加载:
public ShoppingBagViewModel()
{
    this.clothService = new();
    _ = DisplayPickupstationsAsync(); // 触发数据加载任务
}
  1. 调整方法返回类型为Task(无需返回集合,直接操作类内字段即可):
[RelayCommand]
public async Task DisplayPickupstationsAsync()
{
    try
    {
        var pickuplists = await clothService.GetPickupstations();

        if (PickupStations.Count > 0)
            PickupStations.Clear();

        foreach (var pickuplist in pickuplists)
        {
            PickupStations.Add(pickuplist);
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.Message);
    }
}

问题2:Picker项显示为“应用名.Model.模型名”而非Location属性

核心原因

  • 模型类序列化/初始化失败:Pickupstations类的属性仅包含getter,且无无参构造函数,若服务数据通过JSON反序列化生成对象,会导致属性无法被赋值,最终Picker默认调用对象的ToString()方法,显示类的全限定名。
  • 属性值为空:若服务返回数据本身存在问题,Location属性未被正确赋值,同样会触发默认的ToString()显示逻辑。

修复方案

  1. 修改Pickupstations类,添加无参构造函数并开放属性setter:
public class Pickupstations
{
    public Pickupstations() { } // 无参构造函数,满足反序列化要求

    public string Name { get; set; }
    public string Location { get; set; }
    public string Shippingfee { get; set; }
}
  1. 验证服务返回数据的有效性:在数据加载逻辑中添加日志,确认属性值是否正确:
foreach (var pickuplist in pickuplists)
{
    Debug.WriteLine($"Loaded Location: {pickuplist.Location}"); // 输出日志验证属性值
    PickupStations.Add(pickuplist);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:46:10