通过反射使用字符串值设置对齐属性

时间:2010-09-14 08:00:53

标签: c# wpf reflection alignment setvalue

我想通过反射设置对象的align属性(水平/垂直),其值为string类型。我使用像

这样的东西
private void SetPropertiesFromString(object nav, string properties)   
{  
    Regex r = new Regex("`(?<property>[^~]*)~(?<values>[^`]*)");  
    MatchCollection mc = r.Matches(properties);  
    Type type = nav.GetType();  
    for (int i = 0; i < mc.Count; i++)  
    {  
        PropertyInfo prop = type.GetProperty(mc[i].Groups["property"].Value);  
        prop.SetValue(nav, Convert.ChangeType(mc[i].Groups["values"].Value, prop.PropertyType), null);  
    }  
}

(与this完全相同)

我的问题是,我正在从XML读取属性,只有Horizo​​ntalAlignment =“Stretch”。比我创建Control的新实体,我不知道,如何设置像Horizo​​ntalAlignment这样的属性,其中值是“Stretch”等。它导致异常“从'System.String'到'System.Windows.Horizo​​ntalAlignment'的无效转换。 “

1 个答案:

答案 0 :(得分:0)

Horizo​​ntalAlignment是枚举类型。 System.Enum.Parse允许您将字符串转换为相应的枚举值。