protected virtual void NotifyChildPropertyChanged(string propertyName, object sender, PropertyChangedEventArgs e) { ChildPropertyChangedEventHandler handler = ChildPropertyChanged; if (handler != null) { handler(sender, new ChildPropertyChangedEventArgs(this, propertyName, sender, e)); } }
protected virtual void NotifyChildPropertyChanged(string propertyName, object sender, PropertyChangedEventArgs e) { if (propertyName == PROPERTIES.CHILDREN) { InvalidateCompSubCachedCache(); } else if (propertyName == PROPERTIES.PS) { string path = (e is ChildPropertyChangedEventArgs ? ((ChildPropertyChangedEventArgs)e).FullPath : e.PropertyName); if (path == ModelUtils.NameOfProperty((MyClass o) => o.P.X)) { InvalidateCompSubCachedCache(); } } else if (propertyName == PROPERTIES.P) { string path = (e is ChildPropertyChangedEventArgs ? ((ChildPropertyChangedEventArgs)e).FullPath : e.PropertyName); if (path == ModelUtils.NameOfProperty((Point o) => o.X)) { InvalidateCompSubCachedCache(); } else if (path == ModelUtils.NameOfProperty((Point o) => o.Y)) { InvalidateCompSubCachedCache(); } } ChildPropertyChangedEventHandler handler = ChildPropertyChanged; if (handler != null) { handler(sender, new ChildPropertyChangedEventArgs(this, propertyName, sender, e)); } if (propertyName == PROPERTIES.CHILDREN) { NotifyPropertyChanged(PROPERTIES.COMP_SUB); NotifyPropertyChanged(PROPERTIES.COMP_SUB_CACHED); } else if (propertyName == PROPERTIES.PS) { string path = (e is ChildPropertyChangedEventArgs ? ((ChildPropertyChangedEventArgs)e).FullPath : e.PropertyName); if (path == ModelUtils.NameOfProperty((MyClass o) => o.P)) { NotifyPropertyChanged(PROPERTIES.COMP_SUB); } else if (path == ModelUtils.NameOfProperty((MyClass o) => o.P.X)) { NotifyPropertyChanged(PROPERTIES.COMP_SUB_CACHED); } } else if (propertyName == PROPERTIES.P) { string path = (e is ChildPropertyChangedEventArgs ? ((ChildPropertyChangedEventArgs)e).FullPath : e.PropertyName); if (path == ModelUtils.NameOfProperty((Point o) => o.X)) { NotifyPropertyChanged(PROPERTIES.COMP_SUB); NotifyPropertyChanged(PROPERTIES.COMP_SUB_CACHED); } else if (path == ModelUtils.NameOfProperty((Point o) => o.Y)) { NotifyPropertyChanged(PROPERTIES.COMP_SUB); NotifyPropertyChanged(PROPERTIES.COMP_SUB_CACHED); } } }