Я немного проверил в Reflector и нашел что-то, что может вас заинтересовать. Инфраструктура вызывает метод SetStyleSheet
объекта PageTheme
, полученный для вставки элементов управления ссылками в заголовок. Этот фрагмент кода показывает соответствующую логику:
int num = 0;
foreach (string str in this.LinkedStyleSheets)
{
HtmlLink child = new HtmlLink { Href = str };
child.Attributes["type"] = "text/css";
child.Attributes["rel"] = "stylesheet";
if (this._styleSheetTheme)
this.Page.Header.Controls.AddAt(num++, child);
else
this.Page.Header.Controls.Add(child);
}
Перевод ? StyleSheetThemes внедряют таблицы стилей в начало тега заголовка, а Темы внедряют таблицы стилей в end .
Это соответствует предполагаемому различию между темами и темами таблиц стилей; то есть тема всегда побеждает, когда возникает конфликт между скином и настройками управления. Конечно, стиль в нематематическом файле .CSS, использующий атрибут !important
, может по-прежнему переопределять стиль темы, но расположение CSS-файлов в теге head стратегически облегчает темы таблицы стилей переопределения.
Обратите внимание, что у вас может быть и тема таблицы стилей и обычная тема. Естественно, оставьте для темы стилей, которые вы разрабатываете, возможность переопределения, и для тем, которые не должны быть переопределены.
Последнее замечание заключается в том, что метод является internal
и не виртуальным, поэтому для вмешательства в эти два варианта потребуются некоторые навыки кунг-фу-ММА-безумного отражения, и, вероятно, это не в интересах стабильности или ремонтопригодность.