逐步解說:實作新樣式
更新:2007 年 11 月
對於大部分的 ASP.NET Mobile 控制項而言,Style 基底類別 (Base Class) 會提供足夠的屬性樣式。但是,個別控制項可能需要特殊的樣式類別,以提供其他特定於控制項的屬性。
所有的特殊樣式類別都必須繼承自 Style 基底類別。基底類別為狀態管理和繼承 (Inheritance) 提供自動支援。若要使用這些功能,特殊的樣式類別必須定義所有的新屬性並將之儲存於基底類別提供的屬性中。
加入對特定樣式類別之屬性的支援
撰寫繼承自 Style 基底類別的特殊樣式類別。
覆寫此控制項的 CreateStyle 方法,並傳回特殊樣式類別的執行個體 (Instance)。
protected override Style CreateStyle() { return new NewStyle(); }
選擇性地在 Style 屬性設為強型別的控制項上建立新屬性。這個新屬性可以用於下列步驟 (步驟 4)。
protected NewStyle NewStyle { get { return (NewStyle)Style; } }
對特殊類別中的每個新屬性,提供控制項類別本身的屬性。這些屬性將會是樣式屬性的公用存取子。實作這些屬性可以呼叫樣式物件。
protected String ThemeName { get { return NewStyle.ThemeName; } set { NewStyle.ThemeName = value; } }
加入新樣式
將公用的 static string 宣告為成員欄位,它會初始化成為呼叫定義於基底類別中之 RegisterStyle 方法的傳回值。下列範例程式碼會建立支援繼承的 string 屬性,其預設值是空的 string ("")。
public static String ThemeNameKey = RegisterStyle(ThemeName, typeof(String), String.Empty, true);
RegisterStyle 方法會註冊新的樣式屬性,並且傳回可以用來參考該屬性中之樣式的唯一索引鍵。RegisterStyle 方法的參數定義了屬性的名稱、資料型別、預設值,以及其繼承行為。
這個索引鍵應該是公用的,因為控制項配接器也會使用它來存取屬性的繼承感知 (Inheritance-Aware) 值。
使用基底類別的預設索引子屬性,建立公用的屬性 (其實作會存取該屬性)。
public String ThemeName { get { return (String)this[ThemeNameKey]; } set { this[ThemeNameKey] = value; } }