protected virtual void OnPropertyChanged(DependencyPropertyChangedEventArgs e) { PropertyMetadata pm = e.Property.GetMetadata(this); if (pm.PropertyChangedCallback != null) { pm.PropertyChangedCallback(this, e); } }
internal void RaiseMetadataPropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e) { // metadata's changed callback will be raised for // - the original owner metadata // - every attached property metadata // - every metadata that the currently changed object derives from its owner type foreach (Type type in GetOrderedTypeMetadata()) { if (!type.IsInstanceOfType(dependencyObject) && (!IsAttached || type != OwnerType)) { continue; } PropertyMetadata propertyMetadata = typeMetadata[type]; if (propertyMetadata.PropertyChangedCallback != null) { propertyMetadata.PropertyChangedCallback(dependencyObject, e); } } }