private double EnforceHardMaximumAndMinimum(double size) { SceneNodePropertyValue nodePropertyValue = this.DataContext as SceneNodePropertyValue; if (nodePropertyValue != null) { SceneNodeProperty sceneNodeProperty = nodePropertyValue.get_ParentProperty() as SceneNodeProperty; if (sceneNodeProperty != null && sceneNodeProperty.ValueEditorParameters != null) { NumberRangesAttribute numberRangesAttribute = sceneNodeProperty.ValueEditorParameters["NumberRanges"] as NumberRangesAttribute; if (numberRangesAttribute != null) { if (numberRangesAttribute.get_HardMaximum().HasValue&& numberRangesAttribute.get_HardMaximum().HasValue) { size = Math.Min(numberRangesAttribute.get_HardMaximum().Value, size); } if (numberRangesAttribute.get_HardMinimum().HasValue&& numberRangesAttribute.get_HardMinimum().HasValue) { size = Math.Max(numberRangesAttribute.get_HardMinimum().Value, size); } } } } return(size); }
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); }