概述
在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转换器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复