Да, иерархии управления могут быть изменены с темами.
Это стало возможным благодаря ITemplate свойствам, которые Themeable .
Если, например, у вас есть пользовательский элемент управления, который просто имеет свойство темы Contents , вы можете сказать:
<custom:MyThemeableControl runat="server">
<Contents>
... any valid *.skin markup here
</Contents>
</custom:MyThemeableControl>
Теперь вы можете поменять элементы управления внутри Contents на различные темы следующим образом - для ThemeA у вас будет следующий скин:
<custom:MyThemeableControl runat="server">
<Contents>
<asp:Button runnat="server" />
</Contents>
</custom:MyThemeableControl>
А для ThemeB у вас будет следующий скин:
<custom:MyThemeableControl runat="server">
<Contents>
<asp:TextBox runnat="server" />
</Contents>
</custom:MyThemeableControl>
Тогда на этой странице будет отображаться кнопка в ThemeA и TextBox в ThemeB :
<@Page Theme="ThemeA">
<custom:MyThemeableControl runat="server" />
<@Page Theme="ThemeB">
<custom:MyThemeableControl runat="server" />