Pregunta

¿hay alguna manera de cambiar de skinId de código subyacente? Lo probé durante el ajuste de otros bienes, pero no funciona. no se aplica la piel.

public GlobalImageButtonType Skin {
            get { return _skin; }
            set 
            {
                _skin = value;
                this.SkinID = _skin.ToString();
                this.CommandName = _skin.ToString();

                LoadDefaultValues();
            }
        }

También probé page.contols throught de bucle, pero en page_onpreinit evento es recogida controles vacía.

¿Es posible cambiar el SkinID en otro lugar que en la página aspx?

Gracias

¿Fue útil?

Solución

SkinID sólo puede ser cambiado mediante programación en o antes de OnPreInit - su única opción para iniciar este para un control se encuentra en la página OnPreInit .

En circunstancias normales, .Controls debería estar disponible en esa etapa.

En algunos casos, se necesita el siguiente trabajo en torno a .master Páginas:

            /*
             * HACK: need to ensure master controls are instantiated first.
             * */
            MasterPage root = this.Master;
            while (root.Master != null)
                root = root.Master;

            InvokeControlPreInit(Controls);

Ahora puede tener controles que necesitan desollar poner en práctica alguna de las interfaces (IRuntimeSkinableControl) que les permite asignar su propia piel:

    private void InvokeControlPreInit(ControlCollection controls)
    {
        foreach (Control control in controls)
        {
            IRuntimeSkinableControl skinableControl;

            if (null != (skinableControl = control as IRuntimeSkinableControl))
                skinableControl.OnPreInit();

            if (string.IsNullOrEmpty(control.SkinID) && control.Controls.Count > 0)
                InvokeControlPreInit(control.Controls);
        }
    }

El control que se aplicaría este modo:

public class UserControl : System.Web.UI.UserControl, IRuntimeSkinableControl
{
    public virtual void OnPreInit()
    {
        //assign this.SkinID
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top