Добавление обработчика для WPF Control внутри WinForms приложения
Краткий пример, как ответ на вопрос, который получил из Contact Form в блоге.
Думаю, многие знают, что WPF и WinForms можно удобно совмещать в проектах – использовать WPF элементы управления внутри WinForms приложений, чтобы поэтапно расширять визуальные возможности приложения на самых сложных участках, и, наоборот, использовать WinForms элементы управления внутри WPF приложений для быстрого повторного использования кода (существующих элементов управления), когда не хватает времени реализовать что-то существующее для WinForms на WPF.
Об этом и рассказываю и показываю на демонстрациях в кратком 15-минутном вебкасте на TechDays.ru - https://www.techdays.ru/Lecture.aspx?LID=3efb4acc-4505-4109-94a5-27056af548d2
Из Contact Form в блоге я получил вопрос - “как быстро подключить обработчик для WPF кнопки в WinForms приложении”, отвечаю:
Создаем новое WinForms приложение
на toolbox в разделе WPF Interoperability выбираем ElementHost и кидаем его на форму
это действие также автоматически добавит нам ссылки на сборки WPF:
после этого переключаемся в код, создаем кнопку в коде, делаем её потомком 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:
Собственно, все. Нажимаем F5.
И получаем хостинг WPF элемента управления внутри WinForms приложения.
Про обратный сценарий, а также про более сложные сценарии – DataBinding, хостинг GridView, смотрите вебкаст - https://www.techdays.ru/Lecture.aspx?LID=3efb4acc-4505-4109-94a5-27056af548d2
Код данного простейшего приложения - прикреплен к данному посту.
Comments
- Anonymous
December 16, 2008
Краткий пример, как ответ на вопрос, который получил из Contact Form в блоге.