Преобразование Smart Client в XBAP для работы в браузере

У нас есть требование запуска интеллектуального клиентского настольного приложения WinForm в браузере. В следующей статье объясняется, как разместить WinForm в приложении браузера WPF (XBAP).

http://www.codeproject.com/Articles/31429/Embedding-a-NET-WinForms-Application-in-an-Interne

Но наше приложение основано на архитектуре Smart Client (Smart Client Software Factory - Guidance Package). Таким образом, у нас нет контроля над созданием и отображением форм. Может ли кто-нибудь поделиться подробностями о том, что потребуется для размещения смарт-клиента в приложении на основе браузера WPF?


person ssinghai    schedule 14.06.2016    source источник


Ответы (1)


Наконец-то есть обходной путь для этого.

Переопределенный метод Start класса WindowsFormsApplication, который запускает форму Shell. Но это приводит к другой проблеме удаления формы. Метод CabApplication.Run внутренне вызывает метод Start, а затем удаляет форму после ее закрытия. Поскольку я не показываю форму в методе Start, она сразу переходит в утилизацию.

Чтобы преодолеть это, я прокомментировал вызов метода удаления из метода Run в платформе SCSF и обработал его в приложении. Я не уверен, что изменение фреймворка - хорошая идея, но у меня это сработало.

Чтобы получить объект Shell в приложении XBAP, я создал метод в приложении WinForm, который возвращает объект Form. Я также использовал событие в AfterShellCreated, чтобы уведомить приложение XBAP о создании оболочки.

Со всеми этими изменениями я могу разместить смарт-клиент в приложении на основе браузера WPF.

Надеюсь, это поможет другим.

person ssinghai    schedule 17.06.2016