none
Llamar a una Ventana Windows Forms desde WPF RRS feed

  • Pregunta


  • Buenas, tengo un problema; tengo una Solución creada con 2 proyectos diferentes, uno lo tengo creado en WPF con Blend y el otro con Windows Forms en el Visual Studio 2008.
    La parte importante es la de WPF; y llega un punto en que en una ventana con un evento de un boton quiero llamar a la 1º ventana del proyecto de Windows Forms, pero no consigo hacerlo de ninguna manera.
    En el proyecto de WPF tengo referenciado el proyecto de Windows Forms; y si programo el evento me reconoce la ventana, pero al compilar me da error.

    Si alguien sabe como lograrlo, se lo agradeceria enormemente, gracias
    domingo, 2 de agosto de 2009 10:28

Respuestas

  • Hola dreamender:

    Como te comentaba si deseas incluir componentes que trabajen sobre WinForms necesitas explicitamente hacer una referencia a System.Windows.Forms.dll que se incluye en el framework. Además de esta también necesitas referenciar lel ensamblado de integración WindowsFormsIntegration.dll (C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsFormsIntegration.dll)

    Una vez que tengas estas referencias:
    en el XAML incluye:

    xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"

    Lo cual te permite incluir en tu XAML:

    <wfi:WindowsFormsHost>
    ... (tu control de WindowsForm)
    </wfi:WindowsFormsHost>

    Para poder hacer referencia a tu control de usuario es como si se tratase de uno de WPF.

    Debes incluir en la declaración del control:

    xmlns:TUNOMBREIDENTIFICADOR="clr-namespace:ELNAMESPACEDETUCONTROL;assembly=ELNOMBREDELENSAMBLADODETUCONTROL"

    y luego dentro del WindowsFormsHost lo declaras:

    <TUNOMBREIDENTIFICADOR:NOMBREDELACLASEDELCONTROL x:Name="xxx" />

    Espero que así quede más clara la cosa.

    Un saludo.

     


    Please mark posts as answers/helpful if it answers your question
    • Marcado como respuesta dreamender lunes, 3 de agosto de 2009 9:03
    lunes, 3 de agosto de 2009 6:30

Todas las respuestas

  • Prueba a integrar el control de WinForm en la aplicación WPF. (Puesto que dices que esta parte es la principal)
    Revisa este post para saber como hacerlo.
    Please mark posts as answers/helpful if it answers your question
    domingo, 2 de agosto de 2009 13:54
  • Buenas, gracias por la respuesta; pero resulta que no tengo esta libreria: -System.Windows.Forms.dll.

    Y luego cuando dices:
    Por fin incluir el tag WindowsFormsHost necesario para poder embeber a los controles. Sin este control como wrapped recibiriamos un error de compilación, puesto que el control de usuario de WinForm no es un 'UIElement'


    No lo entiendo muy bien, hay que poner solo <
    WindowsFormsHost >< /WindowsFormsHost >   en cualquier parte del xaml?



    domingo, 2 de agosto de 2009 14:19
  • Hola dreamender:

    Como te comentaba si deseas incluir componentes que trabajen sobre WinForms necesitas explicitamente hacer una referencia a System.Windows.Forms.dll que se incluye en el framework. Además de esta también necesitas referenciar lel ensamblado de integración WindowsFormsIntegration.dll (C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsFormsIntegration.dll)

    Una vez que tengas estas referencias:
    en el XAML incluye:

    xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"

    Lo cual te permite incluir en tu XAML:

    <wfi:WindowsFormsHost>
    ... (tu control de WindowsForm)
    </wfi:WindowsFormsHost>

    Para poder hacer referencia a tu control de usuario es como si se tratase de uno de WPF.

    Debes incluir en la declaración del control:

    xmlns:TUNOMBREIDENTIFICADOR="clr-namespace:ELNAMESPACEDETUCONTROL;assembly=ELNOMBREDELENSAMBLADODETUCONTROL"

    y luego dentro del WindowsFormsHost lo declaras:

    <TUNOMBREIDENTIFICADOR:NOMBREDELACLASEDELCONTROL x:Name="xxx" />

    Espero que así quede más clara la cosa.

    Un saludo.

     


    Please mark posts as answers/helpful if it answers your question
    • Marcado como respuesta dreamender lunes, 3 de agosto de 2009 9:03
    lunes, 3 de agosto de 2009 6:30