2012-07-22 175 views
0

我試圖改變使用控件名稱,控制AssemblyQualifiedName,屬性名和屬性值的字符串控件的屬性
動態更改屬性


我曾嘗試:

public void ChangeIt(string ctrlName, string typ, 
        string prop, string value) 
{ 
    Type t = Type.GetType(typ); 
    dynamic obj = Convert.ChangeType(App.Current.MainWindow.FindName(ctrlName), t); 
    // Now how to 
    // obj.Prop=value; 
} 

ChangeIt("Label1", 
     "System.Windows.Controls.Label, PresentationFramework, Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35", 
     "Content", "Hellow World!"); 

謝謝

+0

你爲什麼要這麼做?你能否給我們一些背景,因爲它對我來說似乎不太明顯。 – Dylan 2012-07-22 04:54:56

+0

謝謝@Dylan,我試圖自動更改使用託管到WebBrowser中的JavaScript的屬性,並且它無法到達WPF Window,因爲它不是COM可見的 – MrBassam 2012-07-22 04:58:35

+0

噢,所以ChangeIt()是您試圖從客戶端調用的東西-side javascript!? 如果我是你,我會後退一步並評估另一種方法來完成你試圖達到的目標。對不起,我不能再有任何幫助。 – Dylan 2012-07-22 05:10:42

回答

1

你根本不需要這種類型,而且你不需要使用動態。

public void ChangeIt(string ctrlName, string typ, string prop, string value) { 
    object obj = App.Current.MainWindow.FindName(ctrlName); 
    obj.GetType().GetProperty(prop).SetValue(obj, value); 
} 
+0

非常感謝你:) – MrBassam 2012-07-22 05:29:30