Welcome to MSDN Blogs Sign in | Join | Help

Добавление обработчика для WPF Control внутри WinForms приложения

Краткий пример, как ответ на вопрос, который получил из Contact Form в блоге.

Думаю, многие знают, что WPF и WinForms можно удобно совмещать в проектах – использовать WPF элементы управления внутри WinForms приложений, чтобы поэтапно расширять визуальные возможности приложения на самых сложных участках, и, наоборот, использовать WinForms элементы управления внутри WPF приложений для быстрого повторного использования кода (существующих элементов управления), когда не хватает времени реализовать что-то существующее для WinForms на WPF.

Об этом и рассказываю и показываю на демонстрациях в кратком 15-минутном вебкасте на TechDays.ru - http://www.techdays.ru/Lecture.aspx?LID=3efb4acc-4505-4109-94a5-27056af548d2 

Из Contact Form в блоге я получил вопрос - “как быстро подключить обработчик для WPF кнопки в WinForms приложении”,  отвечаю:

Создаем новое WinForms приложение

 image

на toolbox в разделе WPF Interoperability выбираем ElementHost и кидаем его на форму

image

это действие также автоматически добавит нам ссылки на сборки WPF:

image

после этого переключаемся в код, создаем кнопку в коде, делаем её потомком ElementHost и подключаем обработчик события Click:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.ComponentModel;
   4: using System.Data;
   5: using System.Drawing;
   6: using System.Linq;
   7: using System.Text;
   8: using System.Windows.Forms;
   9:  
  10: namespace WindowsFormsApplication3
  11: {
  12:     public partial class Form1 : Form
  13:     {
  14:         System.Windows.Controls.Button btn1;
  15:         public Form1()
  16:         {
  17:             InitializeComponent();
  18:             btn1 = new System.Windows.Controls.Button();
  19:             btn1.Click += new System.Windows.RoutedEventHandler(btn1_Click);
  20:             elementHost1.Child = btn1;
  21:         }
  22:  
  23:         void btn1_Click(object sender, System.Windows.RoutedEventArgs e)
  24:         {
  25:             MessageBox.Show("Clicked!");
  26:         }
  27:     }
  28: }

причем при подключении события нам, естественно, помогает IntelliSense:

image

Собственно, все. Нажимаем F5.

image

И получаем хостинг WPF элемента управления внутри WinForms приложения.

Про обратный сценарий, а также про более сложные сценарии – DataBinding, хостинг GridView, смотрите вебкаст - http://www.techdays.ru/Lecture.aspx?LID=3efb4acc-4505-4109-94a5-27056af548d2

Код данного простейшего приложения - прикреплен к данному посту.

Published Tuesday, December 16, 2008 4:02 PM by Roman Zdebskiy
Filed under:

Attachment(s): WindowsFormsApplication3.zip

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Добавление обработчика для WPF Control внутри WinForms приложения

Tuesday, December 16, 2008 8:15 AM by Roman Zdebskiy [MSFT]

Краткий пример, как ответ на вопрос, который получил из Contact Form в блоге.

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker