您的位置:首页 > 其它

在VS2008中创建自定义控件(十三)添加内镶属性

2012-01-20 11:20 253 查看
本文目的:

添加内镶属性

什么是内镶属性?先看下图吧。



在上图中,我们添加了一个日历控件,该控件的DayHeaderStyle样式就是一个内镶属性。在aspx源代码中,我们可以看到<DayHeaderStyle>标签是位于<asp:Calendar>标签之间的,这就是内镶属性。

在《在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)》和《在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)》中,我们添加了一个可折叠的属性,这个属性我们也可以将它改成内镶属性。事先声明一下,这里的内镶属性只是在aspx源代码中显示的内镶,而在属性窗口中还是显示为折叠属性。

要将折叠属性改为内镶属性,可以在折叠属性上(在本例中为作者属性)再添加一个PersistenceMode特性,这个特性可以用来指定当属性窗口中的属性或事件的值添加或改变时如何保存到aspx页。

PersistenceMode特性的值是一个PersistenceMode枚举值,在微软公布的值包含以下几种

1、Attribute:指定属性或事件保持为属性。

2、InnerProperty:指定在ASP.NET服务器控件中保持为嵌套标记。这通常用于复杂对象,它们具有自己的持久性属性。

3、InnerDefaultProperty:指定属性在ASP.NET服务器控件中保持为内部文本,还指示将该项属性定义为元素的默认属性,只能撒旦之王一个属性为默认属性。

4、EncodedInnerDefaultProperty:指定属性作为ASP.NET 服务器控件的唯一内部文本而进行保持,属性值是 HTML 编码的,只能对字符串做这种指定。

微软的解释看得有点晕乎,不过可以明确的是,对于我们这种可折叠的属性,也就是他们所说的复杂对象,应该使用InnerProperty。因此,我们要为作者属性添加一个“[PersistenceMode(PersistenceMode.InnerProperty)]”特性,如以下代码所示。

[c-sharp] view
plaincopy

/// <summary>

/// 唐诗的作者

/// </summary>

[Category("Data")] //放到“数据”分组中

[Browsable(true)] //该项属性是否会显示在控件的“属性”窗口中

[Description("诗的作者")] //属性的说明

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

[TypeConverter(typeof(ExpandableObjectConverter))]

[PersistenceMode(PersistenceMode.InnerProperty)]

public Author PoetryAuthor

{

get

{

return _author;

}

set

{

_author = value;

}

}

重新生成后,我们可以在属性窗口中添加作者属性值,此时,aspx源代码中,不再以PoetryAuthor-CourtesyName、PoetryAuthor-Name和PoetryAuthor-SelfTitled属性的形式出现,而是以<PoetryAuthor CourtesyName="子美" Name="杜甫" SelfTitled="少陵野老" />的形式出现——这,就是内镶属性。如下图所示。



生成后的运行结果如下图所示:



===================================================================

原创不容易,转载请注明出处:http://hi.csdn.net/smallfools

相关链接:

在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目
在VS2008中创建自定义控件(二)创建自定义控件并将其添加到工具箱中
在VS2008中创建自定义控件(三)在网页中添加自定义控件
在VS2008中创建自定义控件(四)为自定义控件添加默认值
在VS2008中创建自定义控件(五)修改tagprefix
在VS2008中创建自定义控件(六)创建完全自定义控件
在VS2008中创建自定义控件(七)自定义控件的中常用到的特性
在VS2008中创建自定义控件(八)输出HTML代码
在VS2008中创建自定义控件(九)添加属性
在VS2008中创建自定义控件(十)添加枚举型属性
在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)
在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)
在VS2008中创建自定义控件(十三)添加内镶属性
在VS2008中创建自定义控件(十四)内镶属性与内联属性的优先级
在VS2008中创建自定义控件(十五)创建控件时出错(未能对属性XXX设置XXX)的解决方法

===================================================================

本例的源代码可以在http://download.csdn.net/source/3265989中下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐