2012-07-22 173 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