赋值语法
使用字符串 简单赋值
使用元素属性 复杂赋值
标签中的Attribute部分与对象的Property对应:
<Rectangle Fill = ""> //Attribute标签赋值,这种方式的Value只能是一个字符串值.
Rectangle.Fill = Value;//Property
在上面出现了两个问题:
1) Property 需要适当的转换机制,促使Property与Attribute映射.
2)格式复式程度有限.
那么怎么来解决这两个问题呢,
对于第一个问题:使用TupeConverter类的派生类,在派生类中重写TypeConvert的某些方法.
对于第二个问题:使用属性元素(Property Element).
详解
1.使用TypeConverter类
c# :
public class Human
{
public string Name{set;get;}
public HumanChild{set;get;}
}
XAML:
<window.Resourse>
<local:Human x:key="human" child="ABC"/>
</window.Resourse>
如果上面赋值成功:从Typeconvert派生出一个类,重写它的一个ConvertFrom的方法,这个方法首先有个参数"Value",
这个值就是在xaml中卫它设置的值,我们要做的就是把这个值"翻译"成合适的值赋值对象的属性.
public class StringToHumanTypeConvert:TypeConverter
{
public override Object ConvertFrom(ITypeDescriptorContext context,System.GlobaliZation.CultureInfo culture,Object value)
{
if(value is stirng)
{
Human h = new Human();
h.Name = value as string;
return h;
}
return base.ConverFrom(context,culture,value);
}
}
//用TypeConverterAttribute特征类把StringToHumanTypeConverter这个类贴到作为目标的Human类上
[TypeConverterAttribute(typeof(StringtoHumanTypeContext))]
public class Human
{
public string Name{set;get;}
public Human Child{get;set;}
}
TypeConverter类的使用远远不止这个些,为了配合这个方法还需要重载其他几个方法,(详细看TypeConvert文档).