在运行时加载嵌入在DLL中的WPF控件

时间:2011-10-24 08:26:04

标签: c# .net wpf xaml user-controls

在我的WPF项目中,我有一个包含几个WPF UserControl的dll。我希望,在运行时,能够检查数据库中的参数(已经实现)并根据该参数(这是一个字符串),以便能够将特定的UserControl加载到我的视图。

UserControl实际上是一个Canvas,所以它基本上只是根据数据库条目将正确的Canvas放在View上。

我不知道我是否清楚,所以如果你不明白这个问题,请问我。

感谢所有帮助者!

1 个答案:

答案 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以供参考