Tengo un problema con un control WPF que estoy tratando de alojar en un ElementHost en una aplicación WinForms. El control es un control personalizado sin apariencia que desarrollé originalmente en un proyecto de prueba separado, que era una aplicación de WPF. Ahí obviamente funciona bien, pero en mi aplicación WinForms todo lo que obtengo es un cuadro gris en blanco donde se muestra ElementHost.El control WPF no se muestra en ElementHost en la aplicación WinForms
Aquí está mi código C# para crear, llenar, y añadiendo el ElementHost al control primario:
// 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);
El control principal contiene otros controles Windows Forms que se agregan y quitan en tiempo de ejecución, según sea necesario. Todos están alojados individualmente con su Dock configurado en DockStyle.Fill. Por lo tanto, cada vez que añado que yo envíe la ElementHost a la parte posterior de la Z-fin de asegurarse de que se hace correctamente:
m_ElementHost.SendToBack();
Por lo tanto, sé que no estoy corriendo en un problema de espacio aéreo, ni nada ese.
La única cosa que me preguntaba acerca es la siguiente: en el proyecto original de los estilos para todos mis controles lookless se fusionaron en el diccionario de recursos para la aplicación en App.xaml, así:
<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>
I he migrado App.xaml a mi proyecto WinForms, pero la acción de compilación está configurada en Página. Si lo configuro en ApplicationDefinition, aparece un error que dice que la aplicación tiene múltiples puntos de entrada, lo que tiene sentido, pero me pregunto si los estilos, etc., se están recogiendo. Si no, esto podría explicar por qué estoy obteniendo un rectángulo gris en blanco donde mi control debería ser porque, sin estos, no hay nada para definir su aspecto. Entonces, tal vez la pregunta es, ¿cómo puedo obtener estos estilos en mi aplicación WinForms para que mis controles WPF puedan verlos?
Probablemente también debería mencionar que esto se está ejecutando en .NET Fx 3.5.
De todos modos, por ahora estoy perplejo, por lo que cualquier ayuda sería recibida con gratitud.
¡Muchas gracias!
Bart
¿Cómo se crea una nueva instancia de la clase de aplicaciones? – Prof
Puedes simplemente reactivarlo. –