示例#1
0
            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));
            }
示例#2
0
        // 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);
        }
示例#3
0
 public void NotifyPropertyChanged <T>(Expression <Func <T> > propertySelector)
 {
     PropertyChangedExtensions.Notify(PropertyChanged, propertySelector);
 }