Этот вопрос является результатом беседы в обеденный перерыв с коллегой ... Я читал такие вопросы, как WPF против Winforms ... и лично я думаю, что долго термин WPF - это путь. Проблема / вопрос в том, что делать тем временем.
Да, WPF, безусловно, имеет свои преимущества; не строится на GDI / USER является одним из них. Но на данный момент (то есть в конце 2009 года; с использованием VS2008 или, возможно, даже VS2005; Silverlight3 недавно выпущен и еще не получил широкого распространения / развертывания), WPF почти выглядит как «чрезмерно спроектированное» решение. Хотя я уверен, что со временем все изменится, это не облегчит ни сегодня, ни в ближайшем (скажем, <36 месяцев) будущем. </p>
И давайте посмотрим правде в глаза, WinForms действительно просто и легко; особенно для многих сотрудников, которые все еще «счастливо» используют MFC. Да, может быть сложно делать гладкую анимацию, 3D-графику, градиенты и т. Д .; но это очень практичное решение, которое многие люди (т.е. разработчики на C ++ / MFC) с готовностью понимают сегодня .
С этим длинным вступлением - кто-нибудь думал / устал / и т.д. о идее реализации (большей части) WinForms с использованием WPF (то есть WinForms sans GDI / USER)? Я уверен, что с учетом таких вещей, как Control.Handle
, 100% повторная реализация невозможна. Но, безусловно, кажется, что многие элементы управления WinForms могут быть повторно реализованы с использованием WPF «под капотом». Или это действительно невозможно?
Путем «повторной реализации» я предполагаю удалить ссылки на сборки для System.Windows.Forms , заменив их (скажем) Microsoft.Wpf.WinForms , а затем перестроив мое приложение. После этого я ожидал бы исправить некоторые (относительно небольшое количество) ошибок компилятора и / или среды выполнения (скажем, P / вызывает Win32 API).
Нечто подобное выглядит как хорошее дополнение к различным стратегиям взаимодействия Microsoft WinForms / WPF, таким как WindowsFormsHost . Например, разработчики могут начать использовать / изучать WPF гораздо более инкрементально.
Редактировать: Хотя различные "почему?" обсуждения интересны, они не отвечают на основной технический вопрос: «да., вот как .... или нет, потому что ...».