Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

22.07.2006 04:04 | Raiker

Данная статья завершает наше введение в технологии объединения приложений 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>



Espoir, TheVista.ru Team
Июль, 2006

Комментарии

Комментариев нет...
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.288 секунд (Общее время SQL: 0.264 секунд - SQL запросов: 53 - Среднее время SQL: 0.00498 секунд))
Top.Mail.Ru