Example #1
0
        /// <summary>
        /// The value of pre-cascade property has changed
        /// </summary>
        /// <param name="Stage"></param>
        /// <param name="Property"></param>
        private void Property_onChanged(EPropertyStage Stage, ICssProperty Property)
        {
            SetProperties.SetFlag(Property.CssName.Value, Property.HasValue);

            /*if (!Property.HasValue) SetProperties.Remove(Property.CssName);
             * else SetProperties.Add(Property.CssName);*/

            if (Property.CssName is null)
            {
                throw new Exception($"Cannot fire onChange events for unnamed property! (Name: {Property.CssName}");
            }
            StyleDefinition def = CssDefinitions.StyleDefinitions[Property.CssName];

            if (def is null)
            {
                throw new Exception($"Cannot find a definition for Css property: \"{Property.CssName}\"");
            }

            EPropertyDirtFlags Flags = def.Flags;
            StackTrace         Stack = null;

#if DEBUG
            //stack = new StackTrace(STACK_FRAME_OFFSET, true);
#endif
            Property_Changed?.Invoke(Stage, Property, Flags, Stack);
        }