如何在 MVVM Cross 中修改绑定值

How to modify binded value in MVVM Cross

我在 Xamarin MVVM 应用程序 (ios) 中有一个来自 json 的模型。我想在值后添加“%”?在列表 "coinmarketcaplist" 中包含值 24h_change,这是我要添加 % 的值,它是一个字符串。我知道我应该为它使用 getter,但我不知道如何使用,因为我对此很陌生。下面是我的 ViewModel 代码:

public class CMCTableViewModel : MvxViewModel
{
    protected readonly ICoinMarketCapService _coinMarketCapService;
    public CMCTableViewModel(ICoinMarketCapService coinMarketCapService)
    {
        _coinMarketCapService = coinMarketCapService;
        LoadData();
    }

    private List<CoinMarketCapModel> _coinMarketCapModelList;
    public List<CoinMarketCapModel> CoinMarketCapModelList
    {
        get
        {

            return _coinMarketCapModelList;
        }
        set
        {
            _coinMarketCapModelList = value;
            RaisePropertyChanged(() => CoinMarketCapModelList);
        }
    }

    public async void LoadData()
    {
        CoinMarketCapModelList = await _coinMarketCapService.GetCoins();
    }
}

表格单元格:

internal static readonly NSString Identifier = new NSString("CMCTableCell");

  public override void LayoutSubviews()
  {
    base.LayoutSubviews();
    MvxFluentBindingDescriptionSet<CMCTableCell, CoinMarketCapModel> set = new MvxFluentBindingDescriptionSet<CMCTableCell, CoinMarketCapModel>(this);
    set.Bind(lblName).To(res => res.Name);
    set.Bind(lblPrice).To(res => res.percent_change_24h);
    set.Bind(imgCoin)
     .For(img => img.Image)
     .To(res => res.image)
     .WithConversion<StringToImageConverter>();
    set.Apply();
  }
}

编辑:添加了单元格视图

在绑定中使用转换器:

1) 定义转换器:

public class StringFormatValueConverter : MvxValueConverter
{
    public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
            return null;

        if (parameter == null)
            return value;

        return string.Format(parameter.ToString(), value);
    }
}

2) 在您的绑定中使用它:

set.Bind(lblPrice).To(res => res.percent_change_24h).WithConversion<StringFormatValueConverter>("{0} %");

当您想通过在输入字符串周围添加一些内容(例如单位或货币)来修改输入字符串时,您可以使用此转换器