简体   繁体   中英

Mvvmcross support NotifyPropertyChanged event where event args contain the old value?

There is a UIHealthBar which is binded to a viewmodel property that is changed from 5 to 10. I would like to animate it with filled color from a old value (5) to new value (10). How can I do it in mvvmcross with a better approach ?

This sounds like it could be done with a pair of viewmodel properties - perhaps a tuple that is always changed together - eg

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 };
    }
}

Your custom UIView - the UIHealthBar can then expose either a single property or two properties and you can bind these to the ViewModel's Health values. Drawing/animating the display is then 'normal UI kit work'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM