zoukankan      html  css  js  c++  java
  • 使用TypeConverter类

    3.2.2 使用TypeConverter类将XAML标签的Attribute与对象的Property进行映射注意本小节的例子对于初学者来说理解起来比较困难而且实用性不大,主要是为喜欢刨根问底的WPF程序员准备的,初学者可以跳过这一小节。首先,我们准备了一个类:

     

    这个类具有两个属性:

    string类型的Name

    Human类型的Child

    现在我的期望是,如果在XAML里这样写:

     

    则能够为Human实例的Child属性赋一个Human类型的值,并且Child.Name就是这个字符串的值。我们先看看直接写行不行。在UI上添加一个按钮button1,并在它的Click事件处理器里写上:

     

    编译没有问题,但在单击按钮之后程序抛出异常,告诉Child不存在,为什么Child不存在呢?原因很简单,HumanChild属性是Human类型,而XAML代码中的ABC是个字符串,编译器不知道如何把一个字符串实例转换成一个Human实例。那我们应该怎么做呢?办法是使用TypeConverterTypeConverterAttribute这两个类。首先,我们要从TypeConverter类派生出自己的类,并重写它的一个ConvertFrom方法。这个方法有一个参数名为value,这个值就是在XAML文档里为它设置的值我们要做的就是把这个值“翻译”成合适类型的值赋给对象的属性:

     

    有了这个类还不够,还要使用TypeConverterAttribute这个特征类把StringToHumanTypeConverter这个类“粘贴”到作为目标的Human类上。

     

    因为特征类在使用的时候可以省略Attribute这个词,所以也可以写成:

     

     

  • 相关阅读:
    剑指offer——包含min函数的栈
    剑指offer——顺时针打印矩阵
    剑指offer——二叉树的镜像
    剑指offer——树的子结构
    爬虫的单线程+多任务异步协程:asyncio 3.6
    爬虫中的模拟登陆,IP代理,线程池
    爬虫-数据解析
    爬虫基础
    Markdown语法
    Git
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14124963.html
Copyright © 2011-2022 走看看