Пример #1
0
        public static void OnPropertyChanged <T>(this INotifyStateChange self, Expression <Func <T> > property,
                                                 Action <T> action)
        {
            var propertyName = PropertyName.For(property);

            self.HookToPropertyChangedEvent(propertyName, action);
        }
Пример #2
0
        public static void NotifyOnChange <T>(this INotifyStateChange self, Expression <Func <T> > dependentProperty,
                                              params Expression <Func <object> >[] dependsOn)
        {
            var propertyName   = PropertyName.For(dependentProperty);
            var dependsOnProps = dependsOn.Select(PropertyName.For).ToArray();

            self.NotifyOnChange <T>(propertyName, dependsOnProps);
        }
Пример #3
0
 public static void NotifyOnChange <T>(this INotifyStateChange self, string dependentProperty,
                                       params string[] dependsOn)
 {
     foreach (var dependsOnPropName in dependsOn)
     {
         self.HookToPropertyChangedEvent <T>(dependsOnPropName, c => self.RaisePropertyChanged(dependentProperty));
     }
 }
Пример #4
0
        private static void StateChanged(INotifyStateChange self, string name, object value)
        {
            self.RaisePropertyChanged(name);
            var tracking = (self as IChangeTracking);

            if (tracking != null)
            {
                tracking.TrackChanges(name, value);
            }
        }
Пример #5
0
 private static void HookToPropertyChangedEvent <T>(this INotifyStateChange self, string propertyName,
                                                    Action <T> action)
 {
     self.PropertyChanged +=
         (sender, args) =>
     {
         if (string.CompareOrdinal(args.PropertyName, propertyName) == 0)
         {
             action((T)self.GetProperty(propertyName));
         }
     };
 }
Пример #6
0
 public static void RaisePropertyChanging(this INotifyStateChange self, string propertyName)
 {
     RaisePropertyChangedEventInternal(self, new PropertyChangingEventArgs(propertyName), "PropertyChanging");
 }
Пример #7
0
        public static void RaisePropertyChanged(this INotifyStateChange self, Expression <Func <object> > property)
        {
            var name = PropertyName.For(property);

            RaisePropertyChangedEventInternal(self, new PropertyChangedEventArgs(name), "PropertyChanged");
        }
Пример #8
0
 private static void StateChanging(INotifyStateChange self, string name, object value)
 {
     self.RaisePropertyChanging(name);
 }