Создание элемента управления 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. Вы можете попробовать два пути:

  1. определите имя для вашего WindowsFormsHost и присвойте свойству Child свойства WindowsFormsHost свой экземпляр из статического кода Create() в C#. например, в методе инициализации (или загрузки). - это простой способ.
  2. попробуйте привязать свойство Child метода WindowsFormsHost к Create(). Честно говоря, я не знаю, или этот подход будет работать... но вы можете попробовать:)... как связать с методом в XAML? Вы можете прочитать - это или попробуйте поискать в msdn или google:)

Нашел, это WindowsFormsHost.Child имущество.

Другие вопросы по тегам