Windows Presentation Foundation (WPF) – презентационная система нового поколения
для построения клиентских приложений Windows с ошеломляющими возможностями. Технология
WPF основана на независимой от разрешения системе визуализации, построенной на векторной
графике и использующей преимущества современного графического оборудования. В составWPF
входят следующие средства: язык описания Extensible Application Markup Language
(XAML), элементы управления, механизм привязки данных, средства разметки, 2d- и
3d-графика, анимация, стили, шаблоны, документы, медиа-элементы, текст и средства
оформления текста. Презентационная система входит в состав .Net framework и доступна
для использования внутри 1С:Предприятие средствами Elisy .Net Bridge, начиная с
версии 3.2. Windows Presentation Framework полностью заменяет и многократно превосходит
устаревающую технологию WinForms.
1С:Предприятие содержит всё необходимое для реализации простейших интерфейсов для
пользователя. Расширение возможностей происходило долгое время традиционно – через
ActiveX. Кто разрабатывал ActiveX на C++ знают, насколько это долгое и неблагодарное
дело. Со временем программисты научились эффективнее писать компоненты, пользуясь
тем, что .Net-технология WinForms реализует все необходимые COM-интерфейсы для ActiveX.
Но все традиционные подходы буквально меркнут по сравнению с технологией WPF, вошедшей
в состав .Net framework 3.0. До этого момента использование WFP внутри 1С оставалось
для нас несбыточной мечтой, ограничиваясь созданием отдельных окон параллельно с
1С-приложением. Сейчас есть возможность вставки WPF-контролов внутрь форм 1С.
WPF в 1С начинается традиционно – через вставку ActiveX Elisy.HwndHost на форму.
Elisy.HwndHost.dll- это небольшая библиотека, реализующая 2 события Created, SizeChanged
и 1 свойство Hwnd. Created событие срабатывает в момент создания ActiveX, и с этого
момента становится доступным Hwnd – специальный указатель окна, который пригодится
в дальнейшем. Дело в том, что указатель окна является единственным связующим звеном
при состыковке обычных приложений с WPF-технологией. SizeChanged событие вызывается
каждый раз, когда размер окна изменяется для того, чтобы изменить размер WPF-контрола.
Всю остальную работу по загрузке сборки, подготовке параметров инициализации, созданию
WPF-контрола и управлению его размерами выполнит Elisy.NetBridge.dll. Код 1С подключения
небольшой – всего 10 строк. На основе его можно подключить произвольный элемент
управления WPF. Размер кода примера статьи немного больше, так как пример создавался
еще для одной цели: показать, как можно поставлять сборки внутри конфигураций 1С
и внешних обработок, сведя к минимуму файлы на диске. Но это отдельная тема, затрагивающая
также защиту конфигураций 1С.
Как подключить WPF-контрол на форму 1С:Предприятие:
- Зарегистрировать Elisy.HwndHost.dll в реестре (команда: regsvr32 Elisy.HwndHost.dll).
- В обработчике Created в форме создать IntPtr-объект на основе значения Hwnd.
- Создать объект HwndSourceParameters на основе IntPtr и проинициализировать его другие
свойства, если нужно.
- На основе HwndSourceParameters создать объект HwndSource, который отвечает за согласование
формы 1С и элемента управления WPF.
- Создать WPF-контрол.
- Присвоить свойству RootVisual ссылку на WPF-контрол.
Достоинства WPF и описанного способа подключения:
- WPF несет в себе наибольший набор возможностей из предоставляемых возможностей других
средств разработки ActiveX. Доступны, например, анимация и 3d-графика.
- Разработка элементов на основе .Net framework – это более экономичный способ (экономия
кода и времени до 80%), чем, например, на основе С++.
- Легкий способ подключения WPF к 1С в 10 строк кода.
- Нет необходимости написания специальной «обертки» (враппера), как в случае с WinForms
для установки атрибута ProgId или ClassInterface.
- Передаваемые данные из/в WPF-контрол не ограничены простейшими (число, строка),
как в случае с ActiveX. Типы – любые классы и перечисления из .Net framework.
- Нет необходимости предварительной регистрации каждой сборки WPF. (Примечание: в
ранних версиях требуется зарегистрировать Elisy.HwndHost.dll)
- Нет необходимости в файле на диске со сборкой WPF. Сборка может быть помещена внутрь
конфигурации или внешней обработки.
Файлы для скачивания
Бесплатная ознакомительная версия Elisy .Net Bridge 3.2 (бета)
Внешняя обработка Wpf-ClockSample.epf (15.37 kb)
(Необязательный) Исходный код элемента управления Wpf-ClockSampleSourceCode.zip (36.70 kb)
Ссылки: