Создание элемента управления Windows Forms в WPF без конструктора по умолчанию
Я пытаюсь разместить пользовательский элемент управления Windows Forms в WPF. Мой пользовательский элемент управления не имеет публичного конструктора и имеет статический Create()
метод, который выглядит примерно так:
public abstract class MyCustomControl : UserControl
{
internal MyCustomControl(...) { }
public static MyCustomControl Create(SomeEnum kind)
{
switch (kind)
{
case SomeEnum.Kind1:
return new MySuperCustomControl(...);
...
}
Я хочу создать этот пользовательский элемент управления в WPF, а затем разместить его в WindowsFormsHost
, но я, очевидно, не могу добавить абстрактный класс:
<wfi:WindowsFormsHost Width="250" Height="150">
<my:MyCustomControl x:Name="customControl" /> <-- doesn't work
</wfi:WindowsFormsHost>
Есть ли способ, которым я мог бы добавить его в "Хост" через код?
2 ответа
Решение
Вы не можете разместить контроль без публичного конструктора в XAML. Вы можете попробовать два пути:
- определите имя для вашего WindowsFormsHost и присвойте свойству Child свойства WindowsFormsHost свой экземпляр из статического кода Create() в C#. например, в методе инициализации (или загрузки). - это простой способ.
- попробуйте привязать свойство Child метода WindowsFormsHost к Create(). Честно говоря, я не знаю, или этот подход будет работать... но вы можете попробовать:)... как связать с методом в XAML? Вы можете прочитать - это или попробуйте поискать в msdn или google:)