更新 : 2007 年 11 月
ほとんどの ASP.NET モバイル コントロールでは、Style 基本クラスがプロパティのスタイルに十分に対応しています。しかし、個々のコントロールでは、コントロールに固有のプロパティを提供する専用のスタイル クラスが必要な場合があります。
専用のスタイル クラスは、いずれも Style 基本クラスから継承する必要があります。この基本クラスは、状態管理および継承を自動的にサポートします。これらの機能を使用するには、専用のスタイル クラスが、基本クラスが提供するプロパティにすべての新しいプロパティを定義して格納する必要があります。
専用のスタイル クラスのプロパティのサポートを追加するには
Style 基本クラスから継承した専用のスタイル クラスを記述します。
コントロールの CreateStyle メソッドをオーバーライドし、専用のスタイル クラスのインスタンスを返します。
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; } }
新しいスタイルを追加するには
メンバ フィールドとして public static string を宣言します。これは、基本クラスで定義された RegisterStyle メソッドへの呼び出しの戻り値に初期化されます。次のコード例では、継承をサポートし、空の string ("") を既定値とする、string プロパティを作成します。
public static String ThemeNameKey = RegisterStyle(ThemeName, typeof(String), String.Empty, true);
RegisterStyle メソッドは、新しいスタイル プロパティを登録し、プロパティのスタイルの参照に使用できる一意のキーを返します。RegisterStyle メソッドのパラメータは、プロパティの名前、データ型、既定値、および継承動作を定義します。
コントロール アダプタは、このキーを使用してプロパティの継承に対応する値にアクセスするため、このキーはパブリックである必要があります。
基本クラスの既定のインデクサ プロパティを使用して、実装がプロパティにアクセスするパブリック プロパティを作成します。
public String ThemeName { get { return (String)this[ThemeNameKey]; } set { this[ThemeNameKey] = value; } }