protected virtual void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
        {
            PropertyMetadata pm = e.Property.GetMetadata(this);

            if (pm.PropertyChangedCallback != null)
            {
                pm.PropertyChangedCallback(this, e);
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }