zoukankan      html  css  js  c++  java
  • 控件属性、事件持久化

    1. 我们知道,在VS2003中,自定义控件要得到Intellisense的支持,必须手工编写(后来也有人写了生成工具)Schema,但是在VS2005中,Schema是由IDE自动生成的,就是说,你可以自动获得所有public属性和事件的Intellisence。
    2. 如果,public的属性不需要在Intellisence得到支持,而只在后台代码中使用,则可以为属性应用[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]标签(但是如果属性同时应用了[Bindable(true)],则属性仍在SourceView中获得智能感知)。
    3. 如果属性应用了[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)],则属性类型的信息也会映射到Schema中,比如Style属性,属性类型的子属性也会得到智能感知的支持。
    4. BindableAttribute决定属性和事件是否显示在属性窗口中。
    5. PersistenceMode决定持久化属性的方式,默认为[PersistenceMode(PersistenceMode.Attribute)],表示持久化属性为主标签的属性,如果属性包含子属性,则子属性持久化成破折号连接的样式,比如Font的子属性,Font-Name代表Font.Name子属性;
    6. [PersistenceMode(PersistenceMode.InnerProperty)]表示用嵌套标签表示复杂属性,比如DataList的ItemStyle属性,就使用嵌套的子标签的形式来持久化。
    7. [PersistenceMode(PersistenceMode.InnerDefaultProperty)]与[PersistenceMode(PersistenceMode.InnerProperty)]的区别在于,主标签中的内容分析成此Attribute装饰的Property,比如,上例中的ItemStyle的值需要序列化在一对<ItemStyle></ItemStyle>标签中,而InnerDefaultProperty的属性则可省掉表示属性名的标签对,InnerDefaultProperty在一个类中只能应用一次。
    8. [PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]和InnerDefaultProperty不同的是,它会对内容进行HTML Encoding,比如把<div>变成&lt;div&gt;,就是说它的里面将不允许存在子控件和HTML标签。比如TextBox.Text。
    9. ParseChildrenAttribute决定标签对中的内容是其它的子控件还是嵌套标签表示的属性。
    10. [ParseChildren(false)]表示把内容分析成子控件或HTML标签(和关联的ControlBuilder协同工作)。
    11. [ParseChildren(true)]表示把内容分析成属性,比如DataList中的<ItemStype>等内容。
    12. ParseChildren属性也可以指定默认属性,比如DropDownList使用[ParseChildren(true, "Items") ]将它的内容默认分析为Items属性的值(DropDownList控件同时在Items属性上装饰了[PersistenceMode(PersistenceMode.InnerDefaultProperty)])。
    13. 如果内容中的标签不能分析成控件类型,则会分析成属性。
    14. [PersistChildren]用来装饰一个类,决定这个类把内容分析成控件的子控件,还是控件的元素。[PersistChildren(false,true)]后一个true表示使用自定义的持久化,意味着Schema生成器将不生成也不验证这种控件的内容,比如Xml控件使用内容表示它的xml文档。
    15. [ToolboxItem(false)]意味着控件不会显示在工具箱中,它也不是能独立显示自己内容的控件。比如TableRow,TableCell。
    16. 对于Color和枚举类型,Intellisence会自动提供Picker,对于表示Url的string类型属性,可以对它们应用[UrlProperty]
  • 相关阅读:
    《C# to IL》第一章 IL入门
    multiple users to one ec2 instance setup
    Route53 health check与 Cloudwatch alarm 没法绑定
    rsync aws ec2 pem
    通过jvm 查看死锁
    wait, notify 使用清晰讲解
    for aws associate exam
    docker 容器不能联网
    本地运行aws lambda credential 配置 (missing credential config error)
    Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
  • 原文地址:https://www.cnblogs.com/think/p/588341.html
Copyright © 2011-2022 走看看