2011-10-24 49 views
1

在我的WPF項目中,我有一個包含多個WPF UserControl的dll。我希望在運行時能夠檢查數據庫中的參數(已經實現)並根據該參數(這是一個字符串)能夠將特定的UserControl加載到我的View中。在運行時加載嵌入在DLL中的WPF控件

UserControl實際上是一個Canvas,因此它基本上只是根據數據庫條目在視圖上放置正確的Canvas。

我不知道我是否清楚,所以請問我,如果你不明白這個問題。

感謝所有的幫手!

回答

4

在運行時從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參考

+0

偉大的答案,謝謝!你當然爲我澄清了這個問題 –