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

绑定JSON读取的Currency类列表至Picker控件的问题

解决Picker绑定Currency对象Symbol属性的问题

关于绑定{Currencies.Count}失败的原因

ItemDisplayBinding是用来指定集合中单个项要显示的内容,而Count是集合本身的属性,不属于Currency对象的属性,所以直接绑定会失效。如果需要显示货币总数,应该在Picker外添加TextBlock绑定集合的Count属性,示例:

<TextBlock Text="{Binding CurrenciesAsList.Count, StringFormat='共{0}种货币'}"/>

正确绑定Currency的symbol属性到Picker的步骤

1. 确认ViewModel中的集合属性是公共可绑定的

确保ViewModel里的CurrenciesAsList是公共属性,且类型为ObservableCollection<Currency>(自带集合变更通知):

public class ExpenseReportViewModel : INotifyPropertyChanged
{
    private ObservableCollection<Currency> _currenciesAsList;
    public ObservableCollection<Currency> CurrenciesAsList
    {
        get => _currenciesAsList;
        set
        {
            _currenciesAsList = value;
            OnPropertyChanged();
        }
    }

    public async Task LoadCurrenciesAsync()
    {
        var currencyDict = await CurrenciesService.GetCurrenciesAsync();
        CurrenciesAsList = new ObservableCollection<Currency>(currencyDict.Values);
    }

    // INotifyPropertyChanged实现
    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

2. 确认Currency类的symbol是公共属性

检查Currency实体类,确保symbol是公共属性(而非私有字段),C#规范建议属性用帕斯卡命名法(首字母大写),示例:

public class Currency
{
    public string Symbol { get; set; }
    // 其他属性如Code、Name等
}

如果你的实体类里是小写的symbol,则绑定要对应写{Binding symbol}。

3. XAML中配置Picker的正确绑定

将Picker的ItemsSource绑定到ViewModel的CurrenciesAsList,ItemDisplayBinding绑定到单个Currency对象的Symbol属性:

<Picker ItemsSource="{Binding CurrenciesAsList}"
        ItemDisplayBinding="{Binding Symbol}">
</Picker>

4. 确保View的BindingContext指向ViewModel

在View的构造函数中设置BindingContext,让Picker能找到ViewModel的属性:

public ExpenseReportPage()
{
    InitializeComponent();
    var viewModel = new ExpenseReportViewModel();
    BindingContext = viewModel;
    _ = viewModel.LoadCurrenciesAsync();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:31:01