fire valuechangevent when necessary