Controles Winform en WPF - Blog de Oskar Alvarez

Controles Winform en WPF

De vuelta de vacaciones, empezamos de nuevo a escribir sobre WPF, como siempre que me voy de vacaciones vuelvo con cientos de correos, llamadas telefónicas y problemas, parecen que te castigan si te vas de vacaciones y que cuando vuelves intentan hacerte lo mas dura posible la vuelta, intentaremos seguir escribiendo un post diario pero me temo que este mes va a ser un poco difícil.

Una de las características que al principio no le di mucha importancia pero que luego me ha resultado útil es la de poder hostear controles Winforms dentro de mis aplicaciones de WPF y al revés controles WPF dentro de mis antiguas aplicaciones de WinForm.

Para hostear un control Winform dentro de mis aplicaciones WPF el FrameWork nos provee de la clase WindowsFormsHost que nos va a permitir realizar un hosting de un control WinForm dentro de nuestras aplicaciones de WPF.

Para utilizarlo debemos de incluir la referencia al assembly System.Windows.Forms y a WindowsFormsIntegration

 

image

Como ejemplos vamos a utilizar un DataGrid dentro de nuestra aplicación, el XAML seria

 

  1. <Window x:Class="WpfWinFormsInterop.Window1"
  2.    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.    xmlns:WinForms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
  5.    Title="Window1" Height="300" Width="300">
  6.     <Grid x:Name="root">
  7.         <Grid.RowDefinitions>
  8.             <RowDefinition Height="*"></RowDefinition>
  9.             <RowDefinition Height="20"></RowDefinition>
  10.         </Grid.RowDefinitions>
  11.         <WindowsFormsHost Grid.Row="0">
  12.             <WinForms:DataGridView x:Name="_MyDataGrid">
  13.             </WinForms:DataGridView>
  14.         </WindowsFormsHost>
  15.         <Button Grid.Row="1" Click="Button_Click" HorizontalAlignment="Right">
  16.            Limpiar Filas
  17.         </Button>
  18.     </Grid>
  19. </Window>

En el XAMl vemos como referenciamos al assembly winforms pudiendo insertar el DataGrid dentro de nuestra aplicación WPF.

 

Ahora podemos utilizar el DataGrid desde el código c# como cualquier control.

  1. public partial class Window1 : Window
  2.     {
  3.         public Window1()
  4.         {
  5.             InitializeComponent();
  6.             System.Windows.Forms.DataGridViewColumn col;
  7.             col = new System.Windows.Forms.DataGridViewColumn();
  8.             col.CellTemplate = new System.Windows.Forms.DataGridViewTextBoxCell();
  9.             col.Name = "Columna 1";
  10.             _MyDataGrid.Columns.Add(col);
  11.             col = new System.Windows.Forms.DataGridViewColumn();
  12.             col.CellTemplate = new System.Windows.Forms.DataGridViewTextBoxCell();
  13.             col.Name = "Columna 2";
  14.             _MyDataGrid.Columns.Add(col);
  15.             _MyDataGrid.Rows.Add(new object[] { "Oscar", "Alvarez" });
  16.             _MyDataGrid.Rows.Add(new object[] { "Jorge", "Elorza" });
  17.         }
  18.         private void Button_Click(object sender, RoutedEventArgs e)
  19.         {
  20.             _MyDataGrid.Rows.Clear();
  21.         }
  22.     \

 

El resultado seria

 

image

 

Fácil de utilizar y que nos servirá para reutilizar controles complejos que tengamos hechos en Winforms mientras los trasladamos a WPF

Published 7/9/2009 7:17 por Oskar Alvarez
Archivado en:
Comparte este post:
http://geeks.ms/blogs/oalvarez/archive/2009/09/07/controles-winform-en-wpf.aspx

Comentarios

# Controles Winform en WPF

De vuelta de vacaciones, empezamos de nuevo a escribir sobre WPF, como siempre que me voy de vacaciones

Monday, September 07, 2009 8:13 AM por .NET con oskar

# Controles WPF en WinForms

En el anterior Post vimos como utilizar controles WinForms en WPF, ahora vamos a ver como utilizar controles

Wednesday, September 09, 2009 11:54 AM por Blog de Oskar Alvarez

# re: Controles Winform en WPF

hola me gustaria saber ¿como es que se puede utilizar una herramienta COM component de winform en wpf..

he visto como se insertar controles comunes pero  la verdad necesito saber como agregar un control que obtengo al hacer la referencia a un  libreria,el nombre del control es

"VaxSIPUserAgentOCX Control"

si me pudieras ayudar te lo aggrdeceria muchisimo ya tengo ratoq ueriendo hacer eso, y ahun no lo he podido realizar

Thursday, October 01, 2009 9:14 PM por Linka