在我的WPF项目中,我有一个包含几个WPF UserControl的dll。我希望,在运行时,能够检查数据库中的参数(已经实现)并根据该参数(这是一个字符串),以便能够将特定的UserControl加载到我的视图。
UserControl实际上是一个Canvas,所以它基本上只是根据数据库条目将正确的Canvas放在View上。
我不知道我是否清楚,所以如果你不明白这个问题,请问我。
感谢所有帮助者!
答案 0 :(得分:5)
在运行时从dll加载控件或类似内容的概念称为Reflection,这是在某些情况下执行操作的常用方法。尝试在C#中使用谷歌反射,你会发现很多关于它的教程。
基本上你将在运行时加载dll。然后你会寻找控制权。一旦找到它,您将创建其实例并使用它。所有这些都将在运行时发生
UserControl myControl = null;
Assembly asm = Assembly.LoadFile(Your dll path);
Type[] tlist = asm.GetTypes();
foreach (Type t in tlist)
{
if(t.Name == "Your class name" )
{
myControl = Activator.CreateInstance(t) as UserControl;
break;
}
}
另见this question以供参考