windowsformshost无法从另一个DLL加载用户控件

时间:2015-04-01 12:45:02

标签: wpf windowsformhost

所以我有一个来自另一个项目的dll,它包含许多有用的类和控件(让我们称之为foo.dll)。我正在制作WPF应用。我需要在我的应用程序中使用其中一些。我为windows窗体创建了usercontrol,并从foo.dll引用了UserControlForMe。它显示,一切都很好。现在我想将我的usercontrol插入到wpf表单中。它看起来像这样:

<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>

但是在这里我得到一个错误&#34;无法从foo.dll&#34;加载类型UserControlForMe。没有关于该错误的信息。同样,UserControlForMe在WindowsFormsProfManual中加载。所有这些都在一个类库中进行。我引用了foo.dll所需的一切。

不知道接下来该怎么做。我还尝试在usercontrol.loaded事件中的代码中加载它,但它也失败了,并显示了stacktrace,它导致了UserControlForMe的构造函数。

2 个答案:

答案 0 :(得分:0)

我想您必须将程序集添加到命名空间导入中,以便将应用程序指向正确的方向:

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

答案 1 :(得分:0)

我找到了一个解决方法,因为我无法理解为什么它不起作用。如果我将foo.dll 直接中的UserControlForMe加载到windowsformhost,它可以工作。但是如果有一个“缓冲区”dll,它可以在这个dll中工作,但不会在进一步的窗口中打开。我还以编程方式将UserControlForMe添加到windowsformhost。