/// <summary> /// Provede vložení hodnoty, a vyvolání eventu <see cref="ValueChanging"/>. /// Pokud ale na začátku je <see cref="_ValueIsChanging"/> == true, pak nedělá nic; to je ochranou proti zacyklení. /// </summary> /// <param name="sender"></param> /// <param name="value"></param> /// <param name="eventSource"></param> protected void _SetValue(object sender, T value, EventSourceType eventSource) { if (this._ValueIsChanging) { return; } try { this._ValueIsChanging = true; T oldValue = this._Value; T newValue = this.AlignValueToLimit(value); if (!this.IsEqual(oldValue, newValue)) { this._Value = newValue; GPropertyChangeArgs <T> args = new GPropertyChangeArgs <T>(oldValue, newValue, eventSource); this.CallValueChanging(sender, args); this._Value = args.CorrectValue; } } finally { this._ValueIsChanging = false; } }
/// <summary> /// Metoda vyvolá háček <see cref="OnValueChanging(object, GPropertyChangeArgs{T})"/> a event <see cref="ValueChanging"/>. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> protected void CallValueChanging(object sender, GPropertyChangeArgs <T> args) { this.OnValueChanging(sender, args); if (this.ValueChanging != null) { this.ValueChanging(sender, args); } }
/// <summary> /// Protected háček při změně hodnoty /// </summary> /// <param name="sender"></param> /// <param name="args"></param> protected virtual void OnValueChanging(object sender, GPropertyChangeArgs <T> args) { }