Создание элемента управления Windows Forms в WPF без конструктора по умолчанию - PullRequest
0 голосов
/ 16 декабря 2009

Я пытаюсь разместить пользовательский элемент управления 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 ]

1 голос
/ 16 декабря 2009

Вы не можете разместить управление без публичного конструктора в XAML. Вы можете попробовать два пути:

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

Нашел, это свойство WindowsFormsHost.Child.

...