2009-12-16 4 views
0

Я пытаюсь разместить собственный элемент управления Windows Forms в WPF. Мой пользовательский элемент управления не имеет открытый конструктор, и он имеет статический Create() метод, который выглядит примерно так:Создавать элемент управления Windows Forms в WPF без конструктора по умолчанию

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> 

есть ли способ, которым я мог бы добавить его в «Host» через код?

ответ

1

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

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