动态更改属性
问题描述:
我试图改变使用控件名称,控制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!");
谢谢
答
你根本不需要这种类型,而且你不需要使用动态。
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
你为什么要这么做?你能否给我们一些背景,因为它对我来说似乎不太明显。 – Dylan 2012-07-22 04:54:56
谢谢@Dylan,我试图自动更改使用托管到WebBrowser中的JavaScript的属性,并且它无法到达WPF Window,因为它不是COM可见的 – MrBassam 2012-07-22 04:58:35
噢,所以ChangeIt()是您试图从客户端调用的东西-side javascript!? 如果我是你,我会后退一步并评估另一种方法来完成你试图达到的目标。对不起,我不能再有任何帮助。 – Dylan 2012-07-22 05:10:42