Pergunta

Estou tentando hospedar um controle de formulários Windows personalizado no WPF. Meu controle personalizado não tem um construtor público e tem uma estática Create() Método que se parece com o seguinte:

public abstract class MyCustomControl : UserControl
{
  internal MyCustomControl(...) {  }

  public static MyCustomControl Create(SomeEnum kind)
  {
    switch (kind)
    {
      case SomeEnum.Kind1:
        return new MySuperCustomControl(...);
      ...
    }

O que eu quero fazer é instanciar esse controle personalizado no WPF e depois o hospedar em WindowsFormsHost, mas obviamente não consigo adicionar uma classe abstrata:

 <wfi:WindowsFormsHost Width="250" Height="150">
  <my:MyCustomControl x:Name="customControl" />  <-- doesn't work
</wfi:WindowsFormsHost>

Existe uma maneira de adicioná -lo ao "host" via código?

Foi útil?

Solução

Você não pode hospedar o controle sem construtor público em Xaml. Você pode tentar de duas maneiras:

  1. Defina o nome para o seu WindowsFormShost e defina a propriedade infantil do WindowsFormShost como sua instância do estático CREATE () no código C#. Por exemplo, no método Initialize (ou Load). - É uma maneira simples.
  2. Tente vincular a propriedade infantil do método WindowsFormShost para criar (). Francamente, eu não sei ou essa abordagem será trabalho ... mas você pode tentar :) .. quão vinculativo ao método em xaml? você pode ler - isto Ou tente procurar no MSDN ou Google :)

Outras dicas

Encontrou, é o WindowsFormsHost.Child propriedade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top