2011-05-25 24 views
6

He creado un UserControl de Windows Forms que puede exponerse como un control ActiveX. Ahora estoy tratando de hacer lo mismo con un WPF UserControl. La clase base Winforms UserControl que noté es ComVisible pero la clase WPF UserControl no lo es. ¿Estoy tratando de hacer lo imposible?¿Puedo crear un control ActiveX desde un UserControl de WPF y utilizarlo en una aplicación que no sea CLI C++?

¿Es la única manera de lograr esto para escribir un control WPF y luego incrustarlo en un Winforms UserControl usando ElementHost y luego exponer ese Winforms UserControl como un control ActiveX?

Respuesta

7

Sí, creo que ElementHost es el enfoque que deberá utilizar si existe la posibilidad de que funcione.

Esto se debe a que los controles WPF son intrínsecamente sin ventanas, con todo lo que se procesa en modo retenido a través de una superficie DirectX que WPF maneja.

Existen interfaces para controles ActiveX "sin ventanas", pero la interoperabilidad COM proporcionada por .NET tampoco las correlaciona con objetos WPF.

+1

Lo tengo para trabajar en WinForms con la ayuda de la clase ElementHost. Escribí WPF Telerik Grid wrapper, agregué el control WPF al ElemeHost usando la propiedad Child y expuse WinForms UserControl como control ActiveX. Ahora funciona en mi aplicación C++ no cli. –

+0

¡Muy bueno! Buen trabajo. – jschroedl

Cuestiones relacionadas