控件属性、事件持久化(转)
2013-07-08 10:52
197 查看
我们知道,在VS2003中,自定义控件要得到Intellisense的支持,必须手工编写(后来也有人写了生成工具)Schema,但是在VS2005中,Schema是由IDE自动生成的,就是说,你可以自动获得所有public属性和事件的Intellisence。
如果,public的属性不需要在Intellisence得到支持,而只在后台代码中使用,则可以为属性应用[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]标签(但是如果属性同时应用了[Bindable(true)],则属性仍在SourceView中获得智能感知)。
如果属性应用了[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)],则属性类型的信息也会映射到Schema中,比如Style属性,属性类型的子属性也会得到智能感知的支持。
BindableAttribute决定属性和事件是否显示在属性窗口中。
PersistenceMode决定持久化属性的方式,默认为[PersistenceMode(PersistenceMode.Attribute)],表示持久化属性为主标签的属性,如果属性包含子属性,则子属性持久化成破折号连接的样式,比如Font的子属性,Font-Name代表Font.Name子属性;
[PersistenceMode(PersistenceMode.InnerProperty)]表示用嵌套标签表示复杂属性,比如DataList的ItemStyle属性,就使用嵌套的子标签的形式来持久化。
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]与[PersistenceMode(PersistenceMode.InnerProperty)]的区别在于,主标签中的内容分析成此Attribute装饰的Property,比如,上例中的ItemStyle的值需要序列化在一对<ItemStyle></ItemStyle>标签中,而InnerDefaultProperty的属性则可省掉表示属性名的标签对,InnerDefaultProperty在一个类中只能应用一次。
[PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]和InnerDefaultProperty不同的是,它会对内容进行HTML Encoding,比如把<div>变成<div>,就是说它的里面将不允许存在子控件和HTML标签。比如TextBox.Text。
ParseChildrenAttribute决定标签对中的内容是其它的子控件还是嵌套标签表示的属性。
[ParseChildren(false)]表示把内容分析成子控件或HTML标签(和关联的ControlBuilder协同工作)。
[ParseChildren(true)]表示把内容分析成属性,比如DataList中的<ItemStype>等内容。
ParseChildren属性也可以指定默认属性,比如DropDownList使用[ParseChildren(true, "Items") ]将它的内容默认分析为Items属性的值(DropDownList控件同时在Items属性上装饰了[PersistenceMode(PersistenceMode.InnerDefaultProperty)])。
如果内容中的标签不能分析成控件类型,则会分析成属性。
[PersistChildren]用来装饰一个类,决定这个类把内容分析成控件的子控件,还是控件的元素。[PersistChildren(false,true)]后一个true表示使用自定义的持久化,意味着Schema生成器将不生成也不验证这种控件的内容,比如Xml控件使用内容表示它的xml文档。
[ToolboxItem(false)]意味着控件不会显示在工具箱中,它也不是能独立显示自己内容的控件。比如TableRow,TableCell。
对于Color和枚举类型,Intellisence会自动提供Picker,对于表示Url的string类型属性,可以对它们应用[UrlProperty]
原文链接>>
如果,public的属性不需要在Intellisence得到支持,而只在后台代码中使用,则可以为属性应用[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]标签(但是如果属性同时应用了[Bindable(true)],则属性仍在SourceView中获得智能感知)。
如果属性应用了[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)],则属性类型的信息也会映射到Schema中,比如Style属性,属性类型的子属性也会得到智能感知的支持。
BindableAttribute决定属性和事件是否显示在属性窗口中。
PersistenceMode决定持久化属性的方式,默认为[PersistenceMode(PersistenceMode.Attribute)],表示持久化属性为主标签的属性,如果属性包含子属性,则子属性持久化成破折号连接的样式,比如Font的子属性,Font-Name代表Font.Name子属性;
[PersistenceMode(PersistenceMode.InnerProperty)]表示用嵌套标签表示复杂属性,比如DataList的ItemStyle属性,就使用嵌套的子标签的形式来持久化。
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]与[PersistenceMode(PersistenceMode.InnerProperty)]的区别在于,主标签中的内容分析成此Attribute装饰的Property,比如,上例中的ItemStyle的值需要序列化在一对<ItemStyle></ItemStyle>标签中,而InnerDefaultProperty的属性则可省掉表示属性名的标签对,InnerDefaultProperty在一个类中只能应用一次。
[PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]和InnerDefaultProperty不同的是,它会对内容进行HTML Encoding,比如把<div>变成<div>,就是说它的里面将不允许存在子控件和HTML标签。比如TextBox.Text。
ParseChildrenAttribute决定标签对中的内容是其它的子控件还是嵌套标签表示的属性。
[ParseChildren(false)]表示把内容分析成子控件或HTML标签(和关联的ControlBuilder协同工作)。
[ParseChildren(true)]表示把内容分析成属性,比如DataList中的<ItemStype>等内容。
ParseChildren属性也可以指定默认属性,比如DropDownList使用[ParseChildren(true, "Items") ]将它的内容默认分析为Items属性的值(DropDownList控件同时在Items属性上装饰了[PersistenceMode(PersistenceMode.InnerDefaultProperty)])。
如果内容中的标签不能分析成控件类型,则会分析成属性。
[PersistChildren]用来装饰一个类,决定这个类把内容分析成控件的子控件,还是控件的元素。[PersistChildren(false,true)]后一个true表示使用自定义的持久化,意味着Schema生成器将不生成也不验证这种控件的内容,比如Xml控件使用内容表示它的xml文档。
[ToolboxItem(false)]意味着控件不会显示在工具箱中,它也不是能独立显示自己内容的控件。比如TableRow,TableCell。
对于Color和枚举类型,Intellisence会自动提供Picker,对于表示Url的string类型属性,可以对它们应用[UrlProperty]
原文链接>>
相关文章推荐
- 控件属性、事件持久化
- 控件属性、事件持久化
- C# winForm基础一 基础控件、属性、事件
- Flex中如何利用getTextField事件和numLines属性,计算出TextArea控件中内容的行数的例子
- 常用控件的属性、事件和方法
- GridView控件的属性、事件
- 在asp.net中为Web用户控件添加属性和事件
- 设置父控件的事件,需要去掉子控件的android:clickable="true" 属性。
- 用自己的文件在运行时持久化控件属性 .
- Windows Media Player 控件属性、方法、事件的用法
- vb.net中用户自定义控件中属性、方法、事件的理解
- [WPF - 之一问一答系列] 如何从WPF的WebBrowser控件中获得WebResponse内容?为何WebBrowser控件的Navigated事件参数NavigationEventArgs的WebResponse属性始终为null?
- [转]Delphi 控件属性和事件
- TreeView控件的属性和事件【转】
- 在后台cs文件给控件添加属性(添加客户端事件javascript)
- HTML5 视频播放事件属性与API控件
- ListView集合中设置标记 setTag();方法带一个参数和两个参数的区别,以及设置标记时ViewHolder中的每一个属性控件都需要设置一次,否则在Item中每一个控件的点击事件中取出设置的标
- ASP.NET 用户控件自定义属性、方法、事件
- WP7学习笔记(一) 常用控件属性和事件介绍
- asp.net Login控件基本属性及事件说明