问题描述
I我试图从像这样的XML文件中读取数据< Button> <宽度> 150℃; /宽度> <&的HorizontalAlignment GT;中心< /&的HorizontalAlignment GT;
…。由于在WPF中的各种控件上有大约150种不同的属性,我想确保我能满足XML文件中可能出现的所有可能性而不是写作。
If(property.equals(“ Width”)){Some code; }
Else if(property.equals(“ HorizontalAlignment”))
{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
对象而且我不能
似乎找到了一种方法来设置这些属性使用反射任何想法?
$
推荐答案
这篇关于使用反射在控件上设置属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!