2015-04-01 6 views
0

Так что у меня есть dll из другого проекта, который содержит много полезных классов и элементов управления для меня (давайте назовем его foo.dll). Я делаю приложение WPF. Мне нужно использовать некоторые из них в моем приложении. Я создал свой usercontrol для форм Windows и ссылался на UserControlForMe из foo.dll. Показывается, все хорошо. Теперь я хочу вставить свой usercontrol в форму wpf. Это выглядит следующим образом:windowsformhost cant load usercontrol из другой 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> 

Но здесь я получаю сообщение об ошибке «косяк типа нагрузки UserControlForMe из foo.dll». Об этой ошибке нет. Опять же, UserControlForMe загружается в WindowsFormsProfManual. Все это происходит в одной библиотеке классов. Я ссылался на все, что нужно foo.dll.

Не знаю, как действовать дальше. Я также попытался загрузить его в код в usercontrol.loaded событие, но он тоже не работает, и показывает stacktrace, что приводит к конструктору UserControlForMe.

+0

Вам нужен WindowsFormsHost? Вы пытались его удалить? Мы говорим об исключении компиляции или времени выполнения? А что такое UserControlForMe? –

+0

Мне это нужно, потому что без него WPF не загрузит winforms usercontrol. Его во время компиляции. UserControlForMe - это элемент управления, чтобы нарисовать несколько строк, и я просто не хочу переписывать его в wpf-управлении. – user1193962

ответ

0

Я думаю, вы должны добавить сборку в процессе импорта пространства имен, чтобы указать ваше приложение в правильном направлении:

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

FlatRectangular_Profile.UC находится рядом с элементом управления WPF в одной библиотеке классов, я просто добавил UC в пространство имен, чтобы не смешивать их. Оба элемента управления находятся в одной сборке. – user1193962

0

Я нашел обходной путь, так как я не могу получить, почему он не работает. Если я загружаю UserControlForMe из foo.dll непосредственно в windowsformhost, он работает. Но если есть «буфер» dll, он работает в этой DLL, но не открывается в дальнейшем окне. Также я добавляю UserControlForMe программно к окнуформу.