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
Como ejemplos vamos a utilizar un DataGrid dentro de nuestra aplicación, el XAML seria
- <Window x:Class=»WpfWinFormsInterop.Window1″
- xmlns=»http://schemas.microsoft.com/winfx/2006/xaml/presentation»
- xmlns:x=»http://schemas.microsoft.com/winfx/2006/xaml»
- xmlns:WinForms=»clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms»
- Title=»Window1″ Height=»300″ Width=»300″>
- <Grid x:Name=»root»>
- <Grid.RowDefinitions>
- <RowDefinition Height=»*»></RowDefinition>
- <RowDefinition Height=»20″></RowDefinition>
- </Grid.RowDefinitions>
- <WindowsFormsHost Grid.Row=»0″>
- <WinForms:DataGridView x:Name=»_MyDataGrid»>
- </WinForms:DataGridView>
- </WindowsFormsHost>
- <Button Grid.Row=»1″ Click=»Button_Click» HorizontalAlignment=»Right»>
- Limpiar Filas
- </Button>
- </Grid>
- </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.
- public partial class Window1 : Window
- {
- public Window1()
- {
- InitializeComponent();
- System.Windows.Forms.DataGridViewColumn col;
- col = new System.Windows.Forms.DataGridViewColumn();
- col.CellTemplate = new System.Windows.Forms.DataGridViewTextBoxCell();
- col.Name = «Columna 1»;
- _MyDataGrid.Columns.Add(col);
- col = new System.Windows.Forms.DataGridViewColumn();
- col.CellTemplate = new System.Windows.Forms.DataGridViewTextBoxCell();
- col.Name = «Columna 2»;
- _MyDataGrid.Columns.Add(col);
- _MyDataGrid.Rows.Add(new object[] { «Oscar», «Alvarez» });
- _MyDataGrid.Rows.Add(new object[] { «Jorge», «Elorza» });
- }
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- _MyDataGrid.Rows.Clear();
- }
El resultado seria
Fácil de utilizar y que nos servirá para reutilizar controles complejos que tengamos hechos en Winforms mientras los trasladamos a WPF
De vuelta de vacaciones, empezamos de nuevo a escribir sobre WPF, como siempre que me voy de vacaciones
En el anterior Post vimos como utilizar controles WinForms en WPF, ahora vamos a ver como utilizar controles
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