[Description("简单属性")]
[Category("简单属性")]
public string Value
{
get
{
String s = (String)ViewState["Value"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Value"] = value;
}
}
另外简单属性可以直接使用ViewState存储其值,因为简单属性可以直接映射字符串,而ViewState直接接受的格式也是字符串。
private Person pPerson=null;
[Description("复杂属性--连字符形式")]
[Category("复杂属性")]
[PersistenceMode(PersistenceMode.Attribute)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] //避免复杂属性和子属性值都放在一个框中。
public Person Person
{
get
{
if (pPerson == null)
{
pPerson = new Person();
}
return pPerson;
}
}
Person-Age="28" Person-Name="King Zheng"
PersistenceMode 特性表示在文件中如何保持复杂属性
PersistenceMode.Attribute 作为控件的属性
PersistenceMode.InnerPropery:作为嵌套标签表示复杂属性
PersistenceMode.InnerDefaultProperty:一般用于常用的活重要复杂属性或集合。
PersistenceMode.EncodeInnerDefaultProperty:与InnerDefaultProperty有点区别,其内容进行HTML编码
DesignerSerializtionVisibility:在设计时序列化复杂对象方式
DesignerSerializtionVisibility.Visible 对属性本身生成代码
DesignerSerializtionVisibility.Hidden:不对属性生成代码
DesignerSerializtionVisibility.Visibility.Contend生成复杂属性内容的代码,而不是其本身。
private RowStyle rsRowStyle;
[PersistenceMode(PersistenceMode.InnerProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[NotifyParentProperty(true)]
[Category("复杂属性")]
[Description("复杂属性--内部嵌套形式")]
public RowStyle RowStyle
{
get
{
if (rsRowStyle == null)
{
rsRowStyle = new RowStyle();
}
return rsRowStyle;
}
}
private Items items;
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[NotifyParentProperty(true)]
[TypeConverter(typeof(CollectionConverter))]
[Category("复杂属性")]
[Description("复杂属性--内部默认嵌套形式")]
public Items Items
{
get
{
if (this.items == null)
{
this.items = new Items();
}
return this.items;
}
}
/// <summary>
/// 文本属性
/// </summary>
[NotifyParentProperty(true)]
[PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]
[Description("复杂属性--内部默认嵌套形式")]
public string Text
{
get { return _Text; }
set { _Text = value; }
}
自定义类型转换器继承自TypeConverter,需要OVerride其方法