Controle WPF não exibido no ElementHost no aplicativo WinForms

Eu tenho um problema com um controle WPF que estou tentando hospedar em um ElementHost em um aplicativo WinForms. O controle é um controle personalizado sem aparência que eu desenvolvi originalmente em um projeto de teste separado, que era um aplicativo WPF. Lá, obviamente, funciona bem, mas no meu aplicativo WinForms tudo o que recebo é uma caixa cinza em branco onde o ElementHost é exibido.

Aqui está o meu código C # para criar, preencher e adicionar o ElementHost ao controle pai:

// This is my WPF control
m_TabHostPanel  = new TabHostPanel();
m_ElementHost  = new ElementHost
                 {
                     Child = m_TabHostPanel,
                     Dock = DockStyle.Top,
                     Height = 34
                 };
this.Controls.Add( m_ElementHost );

O controle pai contém outros controles WinForms que são adicionados e removidos em tempo de execução, conforme necessário. Todos eles são hospedados individualmente com o Dock definido como DockStyle.Fill. Assim, toda vez que adiciono um, envio o ElementHost para a parte de trás do pedido Z para garantir que ele seja renderizado corretamente:

m_ElementHost.SendToBack();

Portanto, sei que não estou enfrentando um problema no espaço aéreo, ou algo assim.

A única coisa que me perguntei é o seguinte: no projeto original, os estilos para todos os meus controles sem aparência foram mesclados no dicionário de recursos para o aplicativo no App.xaml, assim:

<Application x:Class="WpfTestApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Application/UserInterface/DataTemplates/TabModelDataTemplate.xaml"/>
                <ResourceDictionary Source="Application/UserInterface/Styles/HoverablePressableButtonStyle.xaml"/>
                <ResourceDictionary Source="Application/UserInterface/Styles/MiniControlButtonStyle.xaml"/>
                <ResourceDictionary Source="Application/UserInterface/Styles/TabCloseButtonStyle.xaml"/>
                <ResourceDictionary Source="Application/UserInterface/Styles/TabScrollLeftButtonStyle.xaml"/>
                <ResourceDictionary Source="Application/UserInterface/Styles/TabScrollRightButtonStyle.xaml"/>
                <ResourceDictionary Source="Application/UserInterface/Styles/TabListDropDownButtonStyle.xaml"/>
                <ResourceDictionary Source="Application/UserInterface/Styles/TabHostComboBoxStyle.xaml"/>
                <ResourceDictionary Source="Application/UserInterface/Styles/TabButtonStyle.xaml"/>
                <ResourceDictionary Source="Application/UserInterface/Styles/TabHostPanelStyle.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Migrei o App.xaml para o meu projeto WinForms, mas a ação de compilação está definida como Page. Se eu defini-lo como ApplicationDefinition, recebo um erro dizendo que o aplicativo tem vários pontos de entrada, o que faz sentido, mas fico imaginando se os estilos etc. estão sendo escolhidos. Caso contrário, isso pode explicar por que estou recebendo um retângulo cinza em branco onde meu controle deveria estar porque, sem eles, não há nada para definir sua aparência. Talvez a pergunta seja: como faço para colocar esses estilos no meu aplicativo WinForms para que meus controles WPF possam vê-los?

Eu provavelmente também devo mencionar que isso está sendo executado no .NET Fx 3.5.

De qualquer forma, por enquanto estou perplexo, então qualquer ajuda seria recebida com gratidão.

Muito Obrigado!

Bart

questionAnswers(1)

yourAnswerToTheQuestion