#011 Размещение элемента WPF на форме NET 2.0

Автор: Topol Воскресенье, Май 6th, 2012 Нет комментариев

Рубрика: Операционные системы

Данная статья завершает наше введение в технологии объединения приложений WPF  и .NET  2.0. Обязательно изучите начальный материал статей № 009 и 010, иначе вы не сможете выполнить задание этой статьи.

Создайте проект на базе .NET 2.0 типа Windows Application и задайте ему имя «MyWPFhost».
Добавьте к решению новый проект типа WinFX Custom Control Library и задайте ему имя MyWPFelement
Отредактируйте файл UserControl1.xaml , чтобы он приобрел следующий вид:

Код:
<UserControl x:Class=»UserControl1″
xmlns=»http://schemas.microsoft.com/winfx/2006/xaml/presentation»
xmlns:x=»http://schemas.microsoft.com/winfx/2006/xaml»
>
<UserControl.Background >
<SolidColorBrush x:Name=»MySolidColorBrush» Color=»Green» />
</UserControl.Background>

<UserControl.Triggers>
<EventTrigger RoutedEvent=»UserControl.Loaded»>
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName=»MySolidColorBrush»
Storyboard.TargetProperty=»Color»
From=»Green» To=»Blue» Duration=»0:0:5″
AutoReverse=»True» RepeatBehavior=»Forever» />
</Storyboard>
</BeginStoryboard>
</EventTrigger>

</UserControl.Triggers>
</UserControl>

Все что будет делать наш контрол — это менять свой цвет. Для этого мы использовали тип анимации ColorAnimation (подробнее см. статью № 005)

Перекомпилируйте проект (меню Build-> Rebuild Solution)
Теперь щелкните правой кнопкой по названию проекта MyWpfHost и выберите команду Add Reference. В появившемся окне перейдите на вкладку Projects и дважды щелкните по строке MyWpfElement.

Перекомпилируйте проект (меню Build-> Rebuild Solution)
Щелкните правой кнопкой по названию первого проекта MyWpfHost и выберите команду Properties, чтобы отредактировать свойства проекта.

При помощи кнопки Add добавьте ссылки на следующие библиотеки (на вкладке .NET):
WindowsFormsIntegration
PresentationCore
PresentationFramework

Перекомпилируйте проект (меню Build-> Rebuild Solution)

Если у вас возникли проблемы по выполнению этой части, обратитесь к статье № 010 за подробными инструкциями.

Теперь давайте разместим наш элемент UserControl1 на форме Form1 нашего .NET 2.0 приложения. Для этого отредактируйте код формы:

Код:
Imports System.Windows.Forms.Integration

Public Class Form1

Dim myWpfControl As MyWPFelement.UserControl1
Dim myHost As ElementHost

End Class

Строка Imports включает библиотеку WindowsFormsIntegration в пространство имен нашего проекта. Именно эта библиотека содержит особый контрол ElementHost предназначенный для размещения на формах .NET 2.0 — он служит для отображения контента Avalon ! Поэтому мы создаем два объекта — первый myWpfControl ссылается на наш контрол UserControl1 , и второй myHost создает экземпляр контрола ElementHost.

Отредактируем событие Form_Load нашей формы:

Код:
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load

myHost = New ElementHost

myHost.Dock = DockStyle.Fill

myWpfControl = New MyWPFelement.UserControl1

myWpfControl.InitializeComponent()

myHost.Child = myWpfControl

Me.Controls.Add(myHost)

End Sub

Думаю вы без труда разберетесь с приведенным выше кодом. Запустите проект и убедитесь, что теперь на нашей .NET 2.0 форме размещен самый настоящий WPF элемент… и мало того — чувствует себя там прекрасно!

Полный листинг программы:

Проект 1 — MyWPFhost
VB-листинг:

Код:
Imports System.Windows.Forms.Integration

Public Class Form1

Dim myWpfControl As MyWPFelement.UserControl1
Dim myHost As ElementHost

Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load

myHost = New ElementHost
myHost.Dock = DockStyle.Fill
myWpfControl = New MyWPFelement.UserControl1
myWpfControl.InitializeComponent()
myHost.Child = myWpfControl
Me.Controls.Add(myHost)

End Sub

End Class

Проект 2 — MyWPFelement
XAML-листинг:

Код:
<UserControl x:Class=»UserControl1″
xmlns=»http://schemas.microsoft.com/winfx/2006/xaml/presentation»
xmlns:x=»http://schemas.microsoft.com/winfx/2006/xaml»
>
<UserControl.Background >
<SolidColorBrush x:Name=»MySolidColorBrush» Color=»Green» />
</UserControl.Background>

<UserControl.Triggers>
<EventTrigger RoutedEvent=»UserControl.Loaded»>
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName=»MySolidColorBrush»
Storyboard.TargetProperty=»Color»
From=»Green» To=»Blue» Duration=»0:0:5″
AutoReverse=»True» RepeatBehavior=»Forever» />
</Storyboard>
</BeginStoryboard>
</EventTrigger>

</UserControl.Triggers>
</UserControl>

Источник: thevista.ru

 

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты