承接上一篇關於屬性的討論,本文將深入探討 ASP.NET Web 控件的樣式系統。位於 System.Web.UI.WebControls 命名空間的 Style 類是所有樣式類的基類,絕大多數標準控件都擁有豐富的樣式相關屬性。
Button1.BackColor = System.Drawing.Color.Red;Button1.ControlStyle.BackColor = System.Drawing.Color.Red;Style myStyle = new Style();
myStyle.BackColor = System.Drawing.Color.Red;
Button1.ApplyStyle(myStyle);
這種方式具有通用性,可定義一次樣式並套用至多個控件。style="background-color: red"前兩種方式實際上操作的是 WebControl 定義的樣式屬性(如 WebControl.BackColor),而第 3 種方式使用的是 Style 類的屬性(Style.BackColor)。Style 類提供了更完整的樣式定義(包含字型、邊框、間距等),並支援透過 ApplyStyle 合併非空樣性值,極大提升了樣式複用與維護的便利性。
當內建樣式屬性無法滿足業務需求時,可透過繼承 Style 類或在控件中定義 Style 型別的屬性來擴充。例如:
[Category("Appearance")]
[PersistenceMode(PersistenceMode.InnerProperty)]
public Style HeaderStyle
{
get
{
if (_headerStyle == null) _headerStyle = new Style();
return _headerStyle;
}
}
private Style _headerStyle;
配合 PersistenceMode.InnerProperty,即可在標記中以巢狀方式設定:
<cc:MyControl runat="server">
<HeaderStyle BackColor="Blue" ForeColor="White" />
</cc:MyControl>
掌握樣式系統的運作原理,能讓你開發出外觀一致、易於主題化與維護的專業級控件。