public static void OnPropertyChanged <T>(this INotifyStateChange self, Expression <Func <T> > property, Action <T> action) { var propertyName = PropertyName.For(property); self.HookToPropertyChangedEvent(propertyName, action); }
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); }
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)); } }
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); } }
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)); } }; }
public static void RaisePropertyChanging(this INotifyStateChange self, string propertyName) { RaisePropertyChangedEventInternal(self, new PropertyChangingEventArgs(propertyName), "PropertyChanging"); }
public static void RaisePropertyChanged(this INotifyStateChange self, Expression <Func <object> > property) { var name = PropertyName.For(property); RaisePropertyChangedEventInternal(self, new PropertyChangedEventArgs(name), "PropertyChanged"); }
private static void StateChanging(INotifyStateChange self, string name, object value) { self.RaisePropertyChanging(name); }