Incrustar un formulario de Windows en una aplicación WPF

julio 25, 2017 Christian Amado 0 Comentarios

Formularios Windows

Se refieren a las antiguas aplicaciones ejecutadas sobre el sistema operativo Windows con una interfaz de usuario interesante pero aburrida donde no se puede salir del esquema impuesto por la plataforma.

WPF

Windows Presentation Foundation se refiere a la evolución de los formularios Windows en donde la interfaz de usuario puede ser creada a gusto del desarrollador/diseñador.

¿Cómo introducir un formulario Windows dentro de WPF?

De manera sencilla lo podemos hacer utilizando un control especializado para tal efecto el cual se denomina WindowsFormsHost, que permite introducir un formulario Windows dentro de una aplicación WPF con fines de reutilización del mismo.


Agregamos referencias a WindowsFormsIntegration y System.Windows.Forms:




Agregamos el código XAML necesario para la integración y adicionamos el control WebBrowser:
<Window x:Class="EjemploWindowsFormsHost.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:EjemploWindowsFormsHost"
        mc:Ignorable="d"
        xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <WindowsFormsHost Name="wfh1">
            <WindowsFormsHost.Child>
                <wf:WebBrowser />
            </WindowsFormsHost.Child>
        </WindowsFormsHost>
    </Grid>
</Window>
using System.Windows;

namespace EjemploWindowsFormsHost
{
    /// 
    /// Lógica de interacción para MainWindow.xaml
    /// 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            (this.wfh1.Child as System.Windows.Forms.WebBrowser).Navigate("https://www.cmasdev.net");
        }
    }
}

0 comentarios: