Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        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;
        }