WPF赋值语法难点

  赋值语法

  使用字符串  简单赋值

  使用元素属性 复杂赋值

 

  标签中的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文档).

   

转载于:https://www.cnblogs.com/Wordy/archive/2012/03/28/2421259.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值