public static void Notify <T>(PropertyChangedEventHandler handler, Expression <Func <T> > propertySelector) { if (handler == null) { return; } MemberExpression memberExpression = PropertyChangedExtensions.GetMemberExpression <T>(propertySelector); if (memberExpression == null) { return; } object value = ((ConstantExpression)memberExpression.Expression).Value; handler(value, new PropertyChangedEventArgs(memberExpression.Member.Name)); }
// For - specifically for property changed event args public static HandlerBase <PropertyChangedEventArgs, PropertyChangedEventHandler> HandleFor (this HandlerBase <PropertyChangedEventArgs, PropertyChangedEventHandler> handler, Expression <Func <Object> > propertySelector) { Guard.ArgumentNotNull(handler, "handler"); Guard.ArgumentNotNull(propertySelector, "propertySelector"); // get the property name var _propertyName = PropertyChangedExtensions.GetPropertyName(propertySelector); if (handler.Predicate != null) { var _existingPredicate = handler.Predicate; handler.Predicate = (e) => _existingPredicate(e) && (string.Equals(e.EventArgs.PropertyName, _propertyName, StringComparison.InvariantCulture)); } else { handler.Predicate = (e) => string.Equals(e.EventArgs.PropertyName, _propertyName, StringComparison.InvariantCulture); } return(handler); }
public void NotifyPropertyChanged <T>(Expression <Func <T> > propertySelector) { PropertyChangedExtensions.Notify(PropertyChanged, propertySelector); }