我是靠谱客的博主 尊敬咖啡豆,最近开发中收集的这篇文章主要介绍WPF TypeConverter转换器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        在xaml中,标签的Attribute都是通过字符串方式赋值的,比如Button的长和宽,但实际这些Attribute并不是字符串,那么要想把字符串解析为对应类型值,就需要通过转换器。在wpf可以利用TypeConverter转换器和TypeConverterAttribute将字符串解析成我们想要的类型值。

 <Grid>
    <Button Width="100" Height="40" Click="Button_Click"/>
 </Grid>

接下来通过一个案例探索TypeConverter和TypeConverterAttribute是如何将字符串转换成指定的类型值的。

        首先创建一个Animal类

    public class Animal
    {
        public string Name { get; set; }
        public Animal Cat { get; set; }
    }
    <Window.Resources>
        <local:Animal x:Key="animal" Cat="cat"/>
    </Window.Resources>
    <Grid>
        <Button Width="100" Height="40" Click="Button_Click"/>
    </Grid>
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Animal cat = this.FindResource("animal") as Animal;
            MessageBox.Show(cat.Cat.Name);
        }

        运行后,点击按钮发现爆出异常,这是因为xaml中的“cat”字符串无法转换成Animal类型。

想要把字符串转换成Animal类型,首先创建StringToAnimalTypeConvetor类,并继承TypeConverter,然后重写ConvertFrom方法。

    public class StringToAnimalTypeConvetor : TypeConverter
    {
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo                                 culture, object value)
        {
            if(value is string)
            {
                Animal animal = new Animal();
                animal.Name = value.ToString();
                return animal;
            }
            return base.ConvertFrom(context, culture, value);
        }
    }

在Animal类上方添加TypeConverterAttribute特征

 [TypeConverterAttribute(typeof(StringToAnimalTypeConvetor))]
    public class Animal
    {
        public string Name { get; set; }
        public Animal Cat { get; set; }
    }

运行程序,成功了!

 

最后

以上就是尊敬咖啡豆为你收集整理的WPF TypeConverter转换器的全部内容,希望文章能够帮你解决WPF TypeConverter转换器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部