public static TInheritor DeferNotifyPropertiesOf<TInheritor, TViewModel>(this TInheritor scopeTask, TViewModel viewModel) where TInheritor : ScopeTaskBase<TInheritor>, new() where TViewModel : IPropertyChangedNotifier { scopeTask.AddAspects(new PropertyNotificationScopeAspect( (obj, props) => PropertyNotificationManager<TViewModel>.PropagateNotification(viewModel, props))); return scopeTask; }
public static TInheritor DeferNotifyProperties<TInheritor, TViewModel>(this TInheritor viewModelScopeTask) where TInheritor : ViewModelScopeTaskBase<TInheritor, TViewModel>, new() where TViewModel : ViewModelBase<TViewModel> { var viewModel = viewModelScopeTask.ViewModel; viewModelScopeTask.AddAspects(new PropertyNotificationScopeAspect( (obj, props) => PropertyNotificationManager<TViewModel>.PropagateNotification(viewModel, props))); return viewModelScopeTask; }
public static void TryRecordOrElseNotify<TOwner>(ScopeContext scopeContext, TOwner owner, string propertyName, NotifyCollectionChangedEventArgs args, bool isRecordingEnabled) where TOwner : IPropertyChangedNotifier { var notify = false; if (scopeContext != null && isRecordingEnabled) { scopeContext.Get<ScopeRecorder>() ?.Record(scopeContext, new CollectionChangeRecord(owner, propertyName, args)); if (!scopeContext.ContainsKey<PropertyNotificationScopeAspect>()) notify = true; } else notify = true; if (notify) PropertyNotificationManager<TOwner>.PropagateNotification(owner, propertyName); }