Преобразование Smart Client в XBAP для запуска в браузере
У нас есть требование запустить приложение WinForm для умного клиента в браузере. В следующей статье объясняется, как разместить WinForm в приложении браузера WPF (XBAP).
http://www.codeproject.com/Articles/31429/Embedding-a-NET-WinForms-Application-in-an-Interne
Но наше приложение основано на архитектуре Smart Client (Smart Software Software Factory - Guidance Package). Таким образом, мы не можем контролировать создание и отображение форм. Кто-нибудь может поделиться информацией о том, что потребуется для размещения смарт-клиента в приложении на основе браузера WPF?
1 ответ
Наконец-то есть обходной путь для достижения этой цели.
Переопределенный метод Start класса WindowsFormsApplication, который запускает форму оболочки. Но это приводит к другой проблеме, связанной с формой. Метод CabApplication.Run внутренне вызывает метод Start, а затем удаляет форму после ее закрытия. Так как я не отображаю форму в методе "Пуск", она напрямую отправляется на утилизацию.
Чтобы преодолеть это, я прокомментировал вызов dispose из метода Run в среде SCSF и обработал его в приложении. Я не уверен, что изменение структуры - это хорошая идея, но она сработала для меня.
Чтобы получить объект Shell в приложении XBAP, я создал метод в приложении WinForm, который возвращает объект Form. Я также использовал событие в AfterShellCreated для уведомления приложения XBAP о создании оболочки.
Со всеми этими изменениями я могу разместить умный клиент в браузерном приложении WPF.
Надеюсь, что это поможет другим.