Esempio n. 1
0
        private void ApplyProperties()
        {
            _renderResult.Begin();
            var propertyList = ControlProperty.GetPropertiesWithAppliersForType(this.GetType());

            foreach (var property in propertyList)
            {
                var slot = GetSlot(property, false);
                if (slot == null &&
                    property.Applier != null)
                {
                    property.Applier.ApplyProperty(this, property, property.DefaultValue, _renderResult);
                }

                else if (slot != null &&
                         slot.CurrentApplier != null &&
                         slot.LastTemplateBindingSessionId != CurrentContext.RenderSessionId)
                {
                    slot.CurrentApplier.ApplyProperty(this, property, slot.CurrentValue, _renderResult);
                }
            }

            if (_styles != null)
            {
                foreach (var item in _styles)
                {
                    _renderResult.Styles[item.Style] = item.Value;
                }
            }

            if (_attributes != null)
            {
                foreach (var item in _attributes)
                {
                    _renderResult.Attributes[item.Name] = item.Value;
                }
            }

            if (_cssClasses != null)
            {
                var cssClass = _renderResult.Attributes[HtmlAttr.Class];
                if (cssClass.HasValue())
                {
                    var current = cssClass.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                    foreach (var cssItem in _cssClasses)
                    {
                        current.AddIfNotExists(cssItem);
                    }

                    cssClass = "";
                    foreach (var cssItem in current)
                    {
                        cssClass += cssItem + " ";
                    }
                    _renderResult.Attributes[HtmlAttr.Class] = cssClass.Trim();
                }
                else
                {
                    foreach (var cssItem in _cssClasses)
                    {
                        cssClass += cssItem + " ";
                    }
                    _renderResult.Attributes[HtmlAttr.Class] = cssClass.Trim();
                }
            }

            if (_renderResult.Styles.Count > 0)
            {
                _renderResult.Attributes[HtmlAttr.Style] = _renderResult.Styles.ToStyleString();
            }
        }