public static bool setProperty <TItem, TProperty> (this TItem item, ref TProperty member, TProperty newValue, PropertyChangedNoValueDelegate <TItem> propertyChangedDelegate, BeforeChangePropertyDelegate <TProperty> beforeChangePropertyDelegate = null, AfterChangePropertyDelegate <TProperty> afterChangePropertyDelegate = null, PropertyValidatorDelegate <TProperty> validator = null, [CallerMemberName] string propertyName = "") where TItem : INotifyPropertyChanged => item.setProperty(ref member, newValue, (i, ov, nv) => propertyChangedDelegate?.Invoke(i), beforeChangePropertyDelegate, afterChangePropertyDelegate, validator, propertyName);
public static bool setProperty <TItem, TProperty> (this TItem item, ref TProperty member, TProperty newValue, PropertyChangedTwoValuesDelegate <TItem, TProperty> propertyChangedDelegate, BeforeChangePropertyDelegate <TProperty> beforeChangePropertyDelegate = null, AfterChangePropertyDelegate <TProperty> afterChangePropertyDelegate = null, PropertyValidatorDelegate <TProperty> validator = null, [CallerMemberName] string propertyName = "") where TItem : INotifyPropertyChanged { validator?.Invoke(newValue); if (Equals(member, newValue)) { return(false); } TProperty oldValue = member; beforeChangePropertyDelegate?.Invoke(oldValue, newValue); member = newValue; afterChangePropertyDelegate?.Invoke(oldValue, newValue); propertyChangedDelegate?.Invoke(item, oldValue, newValue); item.RaisePropertyChanged(propertyName); return(true); }