WPF_初步认识TypeConverter

WPF对象的属性通常为String类型,但并不总是。类型不符时对其进行String赋值显然是不行的,但是可以通过类型转换类将String转换为对应类型后再进行赋值。

1.类型转换类继承TypeConverter类

2.重写ConvertFrom函数

3.为被赋值类(通过TypeConverterAttribute特征类)标注特征

<local:Human x:Key="human" Name="Tom" Child="LittleTom"/>
    //特性(可以理解为Java中的注解,但Java的注解参考了特性)
    [TypeConverterAttribute(typeof(NameToHumanTypeConverter))]//TypeConverterAttribute可简写为TypeConverter(特征类在使用时可省略Attribute)
    public class Human
    {
        public string Name { get; set; }
        public Human Child { get; set; }
    }

    //类型转换器:前端赋值时可能出现类型不符的情况,此时将调用该方法改变数据类型,再赋值
    public class NameToHumanTypeConverter : TypeConverter
    {
        public override object? ConvertFrom(ITypeDescriptorContext? context, CultureInfo? culture, object value)
        {
            string name = value.ToString();
            Human human = new Human();
            human.Name = name;
            return human;
        }
    }

上述代码中,"LittleTom"将作为参数value被传入ConvertFrom函数,ConvertFrom函数的返回值将被赋值给Child属性