My guess is you're not actually doing the change in value in your VM for the property when the value does not change. This is pretty common behavior in MVVM to not raise property-changed when it aint really needed, in your case however you would want to raise the property changed event regardless of the value changing or not.
So if you have something like:
public string Status {
get { return _status; }
set {
if (_status == value)
{
return;
}
_status = value;
RaisePropertyChanged(() => Status);
}
}
change it to:
public string Status {
get { return _status; }
set {
//if (_status == value)
//{
// return;
//}
_status = value;
// Following line is the key bit. When this(property-changed event) is raised, your animation should start.
// So whenever you need your animation to run, you need this line to execute either via this property's setter or elsewhere by directly raising it
RaisePropertyChanged(() => Status);
}
}
This will fire the property changed event everytime the property's setter is invoked which should then trigger your animation regardless of if the value changed or not.