/// <summary> /// Creates a new property set under the specified name and binds to it to detect when a value changes. /// </summary> /// <param name="Name"></param> /// <param name="Selector"></param> /// <param name="Owner"></param> /// <param name="Unset"></param> /// <returns></returns> private CssComputedStyle NewPropertySet(string Name, string Selector, ICssElement Owner, bool Unset, EPropertySetOrigin Origin) { var retVal = new CssComputedStyle(Name, new CssSelector(false, Selector), Owner, false, Unset, Origin); // Capture all update events. retVal.Property_Changed += Handle_Declared_Property_Change; return(retVal); }
/// <summary> /// Adds a new <see cref="CssComputedStyle"/> to the list of styling rules and binds to it to detect when a value changes. /// </summary> /// <param name="Selector"></param> /// <param name="Owner"></param> /// <param name="Unset"></param> /// <returns>Success</returns> internal bool Add_PropertySet(CssComputedStyle prop) { var retVal = CssRules.TryAdd(new AtomicString(prop.Name), prop); // Capture all update events. prop.Property_Changed += Handle_Declared_Property_Change; // We just took on another group of proerties, we should recascade SetFlag(EPropertySystemDirtFlags.NeedsToCascade); return(retVal); }
public StyleProperties(ICssElement owning_element) { owningElement = owning_element; // Populate our rules with a few different common states CssRules.TryAdd(STATE_IMPLICIT, NewPropertySet(STATE_IMPLICIT, null, owning_element, false, EPropertySetOrigin.UserAgent)); CssRules.TryAdd(STATE_USER, NewPropertySet(STATE_USER, null, owning_element, true, EPropertySetOrigin.Author)); CssRules.TryAdd(STATE_HOVER, NewPropertySet(STATE_HOVER, ":hover", owning_element, true, EPropertySetOrigin.Author)); CssRules.TryAdd(STATE_FOCUS, NewPropertySet(STATE_FOCUS, ":focus", owning_element, true, EPropertySetOrigin.Author)); Cascaded = new CssComputedStyle(null, null, owning_element, true); Cascaded.Property_Changed += Handle_Cascaded_Property_Change; // Blending Cascaded.Opacity.onValueChange += Handle_Cascaded_Blend_Change; // Transformations Cascaded.Transform.onValueChange += Handle_Cascaded_Transform_Change; }