private static void AddHandler(IInvocation invocation, INotifyInvocation propertyChangedInterceptor) { if (!Handlers.ContainsKey(invocation.InvocationTarget)) { Handlers.Add(invocation.InvocationTarget, new Dictionary <string, PropertyChangedEventHandler>()); } Handlers[invocation.InvocationTarget].Add(invocation.PropertyName(), (o, e) => { propertyChangedInterceptor.Notify(invocation); }); ((INotifyPropertyChanged)invocation.GetArgumentValue(0)).PropertyChanged += Handlers[invocation.InvocationTarget][invocation.PropertyName()]; }