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

Jon*_*rry 1 .net c# wpf xaml user-controls

在我的WPF项目中,我有一个包含多个WPF用户控件的dll。我希望在运行时能够检查数据库中的参数(已实现),并根据该参数(字符串)将特定的UserControl加载到我的View中。

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

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

感谢所有帮助者!

Har*_*san 5

这种在运行时从dll中加载控件或类似内容的概念称为反射,它是在某些情况下执行操作的常用方法。尝试在C#中使用Google Reflection,您会发现很多关于它的教程。

基本上,您将在运行时加载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;
     }               
  }
Run Code Online (Sandbox Code Playgroud)

另请参阅此问题以供参考