time 
设为首页】【收藏本站
当前位置: 主页 > 程序设计 > .net > Visual Studio > 在VS2008中创建自定义控件(十三)添加内镶属性

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

时间:2010-12-01 23:52 点击:1316次 字体:[ ]




本文目的:

添加内镶属性


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

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

    在上图中,我们添加了一个日历控件,该控件的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)]”特性,如以下代码所示。

 

  1. /// <summary>  
  2. /// 唐诗的作者  
  3. /// </summary>  
  4. [Category("Data")]              //放到“数据”分组中  
  5. [Browsable(true)]               //该项属性是否会显示在控件的“属性”窗口中  
  6. [Description("诗的作者")]       //属性的说明  
  7. [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]  
  8. [TypeConverter(typeof(ExpandableObjectConverter))]  
  9. [PersistenceMode(PersistenceMode.InnerProperty)]  
  10. public Author PoetryAuthor  
  11. {  
  12.     get 
  13.     {  
  14.         return _author;  
  15.     }  
  16.     set 
  17.     {  
  18.         _author = value;  
  19.     }  

 

 

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

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

 

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

 

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

本文源码下载



本文地址 : http://www.fengfly.com/plus/view-192996-1.html
标签: VS2008
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: