2015-04-01 52 views
0

所以我有另一個項目,其中包含許多有用的類和控制對我來說(讓我們稱之爲foo.dll)。我正在製作一個WPF應用程序。我需要在我的應用程序中使用其中的一些。我爲windows窗體創建了我的usercontrol,並從foo.dll引用了UserControlForMe。它顯示,一切都很好。現在我想將我的用戶控件插入到wpf表單中。它看起來像這樣:windowsformhost不能加載另一個DLL的用戶控件

<UserControl x:Class="FlatRectangular_Profile.UserControl1" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      xmlns:uc="clr-namespace:FlatRectangular_Profile.UC" 
      Height="2093" Width="717"> 
    <Grid Name="grid"> 
     <WindowsFormsHost> 
      <uc:WindowsFormsProfManual ></uc:WindowsFormsProfManual> 
     </WindowsFormsHost> 
    </Grid> 
</UserControl> 

但是在這裏我得到一個錯誤「不能從foo.dll加載類型UserControlForMe」。沒有關於該錯誤的信息。再次,UserControlForMe在WindowsFormsProfManual中加載。所有這些都在一個類庫中進行。我引用了foo.dll所需的一切。

不知道下一步該怎麼做。我也嘗試將它加載到usercontrol.loaded事件中的代碼中,但它也失敗了,並顯示了導致UserControlForMe的構造函數的stacktrace。

+0

你需要WindowsFormsHost嗎?你嘗試刪除它嗎?我們在談論編譯或運行時異常嗎? UserControlForMe究竟是什麼? – 2015-04-01 12:50:11

+0

我需要它,因爲沒有它WPF不會加載winforms usercontrol。它在編譯期間。 UserControlForMe是一個控件來繪製一些更加生硬的線條,我只是不想在wpf控件中重寫它。 – user1193962 2015-04-01 13:25:45

回答

0

我想你必須裝配添加到您的命名空間的進口在正確的方向指向你的應用程序:

xmlns:uc="clr-namespace:FlatRectangular_Profile.UC;Assembly=MyDLL" 
+0

FlatRectangular_Profile.UC位於一個類庫中的WPF控件旁邊,我只是將UC添加到名稱空間而不是混合它們。兩個控件都在一個程序集中。 – user1193962 2015-04-01 13:43:54

0

我找到了一個解決辦法,因爲我不能明白爲什麼它不工作。如果我從foo.dll 直接加載UserControlForMe到到windowsformhost,它可以工作。但如果有一個「緩衝區」DLL,它在這個DLL中工作,但不會在更遠的窗口中打開。此外,我以編程方式將UserControlForMe添加到windowsformhost。

相關問題