更新: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; } }
添加新样式
将一个公共 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; } }