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

如何在Xamarin MVVM(iOS)应用中为24h_change绑定值添加%

给CoinMarketCap列表的24h_change添加%符号的实现方案

嘿,我来帮你搞定这个需求!你找对方向了,用计算属性的getter就能轻松给24h_change加上%符号,下面一步步来操作:


1. 完善你的模型类

首先假设你的JSON生成的模型类(比如叫CoinMarketCapModel)有原始的_24h_change字段,我们需要在模型里新增一个只读的计算属性,专门用来返回带%的格式化值:

// 你的JSON模型类(示例)
public class CoinMarketCapModel : MvxNotifyPropertyChanged // 建议继承Mvx的通知类,支持属性变更通知
{
    // 原始的24h_change字段(JSON反序列化用)
    private string _24h_change;
    public string _24h_change
    {
        get => _24h_change;
        set => SetProperty(ref _24h_change, value); // 用Mvx的SetProperty触发变更通知
    }

    // 其他原有字段...
    public string name { get; set; }
    public string symbol { get; set; }
    public string price_usd { get; set; }

    // 新增的格式化属性,仅提供getter
    public string Formatted24hChange
    {
        get
        {
            // 先做空值判断,避免显示异常
            if (string.IsNullOrWhiteSpace(_24h_change))
                return "N/A"; // 这里可以换成你想要的默认占位符

            // 拼接%符号返回
            return $"{_24h_change}%";
        }
    }
}

小提示:如果你的_24h_change是数值类型(比如double/decimal),可以直接做格式化处理,比如:

public double _24h_change { get; set; }
public string Formatted24hChange => $"{_24h_change:F2}%"; // F2表示保留两位小数

2. 在ViewModel中正常使用列表

你的ViewModel里的coinmarketcaplist不需要额外修改,只要确保它是ObservableCollection<CoinMarketCapModel>类型(或者Mvx的MvxObservableCollection),这样数据更新时UI会自动响应:

public class CMCTableViewModel : MvxViewModel 
{ 
    protected readonly ICoinMarketCapService _coinMarketCapService; 

    // 列表字段,用MvxObservableCollection更适配MVVM绑定
    private MvxObservableCollection<CoinMarketCapModel> _coinmarketcaplist;
    public MvxObservableCollection<CoinMarketCapModel> coinmarketcaplist
    {
        get => _coinmarketcaplist;
        set => SetProperty(ref _coinmarketcaplist, value);
    }

    public CMCTableViewModel(ICoinMarketCapService coinMarketCapService)
    {
        _coinMarketCapService = coinMarketCapService;
        // 这里是你调用服务获取数据的逻辑,比如:
        // LoadCoinData();
    }

    // 示例加载数据方法
    private async Task LoadCoinData()
    {
        var rawData = await _coinMarketCapService.GetCoinDataAsync();
        coinmarketcaplist = new MvxObservableCollection<CoinMarketCapModel>(rawData);
    }
}

3. 在iOS视图中绑定格式化后的属性

最后在你的TableView Cell绑定代码里,把原来绑定_24h_change的地方,换成我们新增的Formatted24hChange属性就行:

// 假设你的Cell里有一个用来显示变化率的UILabel(比如叫ChangeRateLabel)
protected override void Bind()
{
    base.Bind();
    var set = this.CreateBindingSet<YourCoinCell, CoinMarketCapModel>();
    // 绑定到格式化后的属性
    set.Bind(ChangeRateLabel).To(vm => vm.Formatted24hChange);
    // 其他绑定...
    set.Apply();
}

这样运行起来后,列表里的24小时变化率就会自动带上%符号啦!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:06:14