使用反射在控件上设置属性

使用反射在控件上设置属性

本文介绍了使用反射在控件上设置属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I我试图从像这样的XML文件中读取数据< Button> <宽度> 150℃; /宽度> <&的Horizo​​ntalAlignment GT;中心< /&的Horizo​​ntalAlignment GT;
…。由于在WPF中的各种控件上有大约150种不同的属性,我想确保我能满足XML文件中可能出现的所有可能性而不是写作。

If(property.equals(“ Width”)){Some code; }

Else if(property.equals(“ Horizo​​ntalAlignment”))

{Some code; }

150次我发现了反射并编写了以下代码来处理所有原始类型属性和ENUM类型
属性。 public FrameworkElement setControlProperties2(FrameworkElement控件,Hashtable属性,字符串controlType)

{

Type type = control.GetType();

foreach(属性中的DictionaryEntry属性)

{

PropertyInfo propertyInfo = type.GetProperty((string)property.Key);

Type propertyType = propertyInfo.PropertyType;

if(propertyType.IsPrimitive)

{

type.GetProperty((string)property.Key).SetValue(control,Convert.ChangeType((string)property.Value,propertyType,null),null);

} else if(propertyType.IsEnum )

{

object desiredPropertyValue = Enum.Parse(propertyType,
(string)property.Value); propertyInfo.SetValue(control,desiredPropertyValue,null);

}}返回控件;

}

但是仍然有大约80多个属性像Magin一样需要厚度对象或Fontweight需要FontWeights
对象而且我不能

似乎找到了一种方法来设置这些属性使用反射任何想法?
$

推荐答案


这篇关于使用反射在控件上设置属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-15 08:56