1

文字列型の値で、反射によるオブジェクトの整列プロパティ(水平/垂直)を設定したいと思います。私は次のようなものを使用します

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);  
    }  
}

(これとまったく同じです)

私の問題は、XMLからプロパティを読み取っていて、Horizo​​ntalAlignment="Stretch"しかないことです。Controlの新しいエンティティを作成するより、Horizo​​ntalAlignmentのようなプロパティを設定する方法がわかりません。値は「Stretch」などです。これにより、例外「「System.String」から「System.Windows.Horizo​​ntalAlignment」へのキャストが無効になります。 「」

4

1 に答える 1

0

Horizo​​ntalAlignment は列挙型です。System.Enum.Parse を使用すると、文字列を対応する列挙値に変換できます。

于 2010-09-14T08:10:56.523 に答える