System.Windows.DependencyProperty.UnmanagedPropertyChangedCallback C# (CSharp) Method

UnmanagedPropertyChangedCallback() private static method

private static UnmanagedPropertyChangedCallback ( IntPtr dependency_object, IntPtr dependency_property, IntPtr old_value, IntPtr new_value ) : void
dependency_object IntPtr
dependency_property IntPtr
old_value IntPtr
new_value IntPtr
return void
        private static void UnmanagedPropertyChangedCallback(IntPtr dependency_object, IntPtr dependency_property, IntPtr old_value, IntPtr new_value)
        {
            DependencyProperty property;
            CustomDependencyProperty custom_property;
            DependencyObject obj;
            object old_obj, new_obj;

            if (!properties.TryGetValue (dependency_property, out property)) {
                Console.Error.WriteLine ("DependencyProperty.UnmanagedPropertyChangedCallback: Couldn't find the managed DependencyProperty corresponding with native {0}", dependency_property);
                return;
            }

            custom_property = property as CustomDependencyProperty;

            if (custom_property == null) {
                Console.Error.WriteLine ("DependencyProperty.UnmanagedPropertyChangedCallback: Got the event for a builtin dependency property.");
                return;
            }

            // Console.WriteLine ("UnmanagedPropertyChangedCallback {3} {2} {0} {1}", old_value, new_value, custom_property.name, custom_property.property_type.FullName);

            if (custom_property.property_changed_callback == null)
                return;

            obj = NativeDependencyObjectHelper.Lookup (dependency_object) as DependencyObject;

            if (obj == null)
                return;

            old_obj = Value.ToObject (property.property_type, old_value);
            new_obj = Value.ToObject (property.property_type, new_value);

            InvokeChangedCallback (obj, property, custom_property.property_changed_callback, old_obj, new_obj);
        }