Mvvmcross支持NotifyPropertyChanged事件,其中事件参数包含旧值

本文关键字:事件 参数 包含旧 支持 NotifyPropertyChanged Mvvmcross | 更新日期: 2023-09-27 18:10:25

有一个UIHealthBar,它被绑定到一个viewmodel属性,从5改变到10。我想用填充颜色将它从旧值(5)动画到新值(10)。我如何用更好的方法在mvvmcross中做到这一点?

Mvvmcross支持NotifyPropertyChanged事件,其中事件参数包含旧值

这听起来像是可以用一对视图模型属性来完成的-也许是一个总是一起更改的元组-例如

public class MyViewModel : MvxViewModel
{
    public MyViewModel()
    {
        // subscribe for health updates here
    }
    public class HealthTuple
    {
        public double Old {get;set;}
        public double New {get;set;}
    }
    private HealthTuple _health; 
    public HealthTuple Health 
    {
       get { return _health; }
       set { _health = value; RaisePropertyChanged(() => Health); }
    } 
    private void OnNewHealth(HealthMessage message)
    {
        Health = new HealthTuple() { Old = _health.New, New = message.Value };
    }
}

你的自定义UIView - UIHealthBar可以暴露一个或两个属性,你可以将这些属性绑定到ViewModel的Health值。然后绘制/动画显示是"正常的UI工具包工作"