
- •Лабораторная работа №7. Введение в wpf. Хостинг wpf-элемента управления в приложении WinForms.
- •1 Цель работы
- •2 Краткая теория
- •2.1 Общие сведения
- •2.2 Разметка и код программной части
- •2.2.1 Разметка
- •2.2.2 Код программной части
- •InitializeComponent();
- •Void button_Click(object sender, RoutedEventArgs e)
- •3 Создание пользовательского элемента управления (wpf User Control)
- •InitializeComponent();
- •4 Построение приложения WinForms для демонстрации хостинга wpf-элемента управления
- •InitializeComponent();
- •InitializeComponent();
InitializeComponent();
}
public event TextChangedEventHandler TextChanged;
public event ClickEventHandler Click;
public string Text
{
get { return (string)GetValue(TextProperty); }
set
{
SetValue(TextProperty, value);
}
}
public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(UserControl1), new FrameworkPropertyMetadata("Строка поиска", new PropertyChangedCallback(OnTextChanged)));
private static void OnTextChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
(obj as UserControl1).UpdateText (args.NewValue.ToString());
}
private void UpdateText(string NewText)
{
textBox1.Text = NewText;
TextChanged(this, NewText);
}
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
SetValue(TextProperty, textBox1.Text);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Click();
}
}
Перейти в редактор XAML-кода и в строке, которая начинается с <Button добавить ссылку на обработчик, написав следующее
Click="button1_Click"
Т.о. видоизмененная строка будет иметь вид:
<Button Click="button1_Click" Name="button1" Margin="0,0,11,0" Grid.Column="1" FontSize="14">
В редакторе XAML-кода и в строке, которая начинается с <TextBox добавить ссылку на обработчик, написав следующее
TextChanged="textBox1_TextChanged"
Т.о. видоизмененная строка будет иметь вид:
<TextBox TextChanged="textBox1_TextChanged" Margin="0,0,11,0" Name="textBox1" FontSize="14" BorderThickness="3">
Построение пользовательского составного элемента управления завершено. Для его компиляции и сборки необходимо выполнить команду из меню Build->Build WpfControlLibrary1.
4 Построение приложения WinForms для демонстрации хостинга wpf-элемента управления
Создайте проект Windows Forms Application с именем WinFormsApp1.
Добавить к текущему solution проект с разработанным составным элементом управления. Для этого перейти в Solution Explorer, щелкнуть правой кнопкой мыши по строке «Solution WinFormsApp1 (1 project)», в появившемся контекстном меню выбрать пункт Add-> Existing Project… Далее выбрать файл проекта созданного элемента управления (WpfControlLibrary1.csproj).
После этого в Toolbox появится ссылка на добавленный элемент управления (рис. 7.9):
Рисунок 7.9 – Пользовательский элемент управления в Toolbox
Добавьте элемент UserControl1 на форму и растяните его, как показано на рисунке 7.10:
|
Рисунок 7.10 – Работа с пользовательским элементов управления
|
Фактически, на форму был добавлен экземпляр класса ElementHost, который отвечает за интеграцию WPF-элементов в приложение WinForms. Добавление созданного элемента управления можно было выполнить и другим способом: добавить на форму экземпляр класса ElementHost и затем в нем подключить UserControl1 (рис. 7.11).
|
Рисунок 7.11 – Второй способ подключения пользовательского элемента управления
|
Перейдите к редактированию кода и подключите UserControl1 в инструкции using:
using WpfControlLibrary1;
Задайте указатель на созданный элемент управления в классе своего приложения, т.е. добавьте следующую строку перед конструктором:
UserControl1 wpf_control;
В конструктор внести следующие изменения:
public Form1()
{