用程序改變theme
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
Page.Theme = Request["ChooseTheme"];
}
//ChooseTheme為dropdownlist控件名
Theme是FrameWork 2.0新增的.
一般引用主題和皮膚方式有這有這兩種:stylesheettheme和 theme.這兩個用法基本一樣,就是執(zhí)行的優(yōu)先級不一樣.下面是我做了測試的結(jié)果:
1. Theme="mytheme"
只在頁面上定義Theme時(shí),頁面只使用Theme的主題樣式,不會使用頁面上用戶再定義的樣式
2. StyleSheetTheme="mytheme"
當(dāng)定義了StyleSheetTheme時(shí),頁面先加載StyleSheetTheme屬性中的樣式,再合并頁面上的樣式,如果有一樣的樣式定義,則取頁面中的樣式
3.兩者皆有 Theme="mytheme" StyleSheetTheme="mytheme2"
先加載StyleSheetTheme的樣式,再加載頁面中的樣式,再加載Theme中的樣式,如果有一樣的樣式定義,則后面加載的樣式覆蓋前面加載的樣式
總而言之: 加載的順序是:StyleSheetTheme ----->頁面中的樣式 -----> Theme .
最后顯示是:取三者合并,有一樣的樣式從后面加載的往前取就對了.
由于存在優(yōu)先級:所以應(yīng)用
StyleSheetTheme 在設(shè)計(jì)階段可以看到它的樣式,所見即所得,而應(yīng)用Theme只能在運(yùn)行時(shí)候才能看到結(jié)果。