在复合控件中应用主题

本文关键字:应用 复合控件 | 更新日期: 2023-09-27 18:15:25

我有一个创建数据网格和其他组件的复合控件。控件的Themeable属性设置为true:

[ToolboxData("<{0}:MyCompositeControl runat=server />")]
[Themeable(true)]
public class MyCompositeControl : CompositeControl {

.skin文件在我的主题,这是应用到页面,我有一些设置GridView控件,如

<asp:GridView runat="server" GridLines="None" CssClass="datacontrol">
  <AlternatingRowStyle BackColor="#E0F0FF" ForeColor="#333333" />
</asp:GridView>

皮肤设置应用于页面中的其他网格视图,但不应用于我的复合控件创建的网格视图。

如何将主题应用于复合控件创建的控件?

在复合控件中应用主题

解决方案是简单地显式调用ApplyStyleSheetSkin在OnLoad方法中的子控件:

protected override void OnLoad(EventArgs e) {
    EnsureChildControls();
    TheGridView.ApplyStyleSheetSkin(Page);
}