public override void Subscribe(object target, IBindable bindable) { var type = target.GetType(); var eventInfo = type.GetEvent(EventName); EventHandler eventHandler = null; eventHandler = new EventHandler((o, e) => { if (bindable.IsDisposed) { eventInfo.RemoveEventHandler(target, eventHandler); return; } bindable.NotifyChange(); }); eventInfo.AddEventHandler(target, eventHandler); }
public override void Subscribe(object target, IBindable bindable) { var notifier = (INotifyPropertyChanged)target; PropertyChangedEventHandler notifierOnPropertyChanged = null; notifierOnPropertyChanged = (sender, e) => { if (e.PropertyName != PropertyName) { return; } if (bindable.IsDisposed) { notifier.PropertyChanged -= notifierOnPropertyChanged; return; } bindable.NotifyChange(); }; notifier.PropertyChanged += notifierOnPropertyChanged; }
internal void Initialize(IBindable <T> target) { Target = target; Source.HasChanged += OnChanged; Target.HasChanged += OnChanged; switch (Mode) { case BindingMode.TwoWayPrioritizeTarget: case BindingMode.FromTarget: target.NotifyChange(); break; case BindingMode.IntoTarget: case BindingMode.TwoWay: Source.NotifyChange(); break; case BindingMode.Disabled: break; } }