public static void OverrideValueEditorParameters(PropertyReferenceProperty baseProperty, PropertyReferenceProperty derivedProperty, string key)
        {
            SceneNodeProperty sceneNodeProperty = baseProperty as SceneNodeProperty;

            if (derivedProperty == null || sceneNodeProperty == null)
            {
                return;
            }
            ValueEditorParameters newParams = new ValueEditorParameters(sceneNodeProperty.Attributes, key);

            if (!(newParams["NumberRanges"] is NumberRangesAttribute))
            {
                NumberRangesAttribute numberRangesAttribute = derivedProperty.Attributes[typeof(NumberRangesAttribute)] as NumberRangesAttribute ?? new NumberRangesAttribute(new double?(), new double?(), new double?(), new double?(), new bool?(false));
                List <Attribute>      list = new List <Attribute>();
                foreach (object obj in sceneNodeProperty.Attributes)
                {
                    list.Add((Attribute)obj);
                }
                list.Add((Attribute)numberRangesAttribute);
                newParams = new ValueEditorParameters(new AttributeCollection(list.ToArray()), key);
            }
            derivedProperty.OverrideValueEditorParameters(newParams);
        }
 static ValueEditorParameters()
 {
     ValueEditorParameters.RegisterParameterName("NumberRanges", typeof(NumberRangesAttribute));
     ValueEditorParameters.RegisterParameterName("NumberIncrements", typeof(NumberIncrementsAttribute));
     ValueEditorParameters.RegisterParameterName("NumberFormat", typeof(NumberFormatAttribute));
 }