Какой самый простой способ обновить большое приложение C# winforms до WPF

Я работаю над большим C# приложением (примерно 450000 строк кода), у нас постоянно возникают проблемы с кучей десктопов и утечками GDI. WPF решает эти проблемы, но я не знаю, каков наилучший способ обновления (я ожидаю, что это займет много времени). Приложение имеет только несколько форм, но они могут содержать множество различных наборов пользовательских элементов управления, которые определяются программно.

Это внутреннее приложение компании, поэтому наши циклы выпуска очень короткие (обычно 3 недели цикла выпуска).

Есть ли какой-то путь постепенного обновления или мы должны принять удар одним мощным усилием?

5 ответов

Решение

Вы можете начать с создания хоста WPF.

Затем вы можете использовать элемент управления для размещения вашего текущего приложения. Затем я предлагаю создать библиотеку ваших новых элементов управления в WPF. По одному за раз вы можете создавать элементы управления (я предлагаю сделать их пользовательскими, а не пользовательскими). В пределах стиля для каждого элемента управления вы можете начать с использования элемента управления , чтобы включить "старые" элементы управления окнами. Затем вы можете потратить время на рефакторинг и воссоздание каждого элемента управления как завершенного WPF.

Я думаю, что все еще потребуются первоначальные усилия для создания ваших управляющих оболочек и разработки хоста WPF для приложения. Я не уверен в размере приложения и / или сложности пользовательских элементов управления, поэтому я не уверен, сколько усилий вы бы приложили. Условно говоря, это значительно меньше усилий и намного быстрее, чтобы таким образом запустить ваше приложение в WPF.

Я не просто сделал бы это и забыл об этом, поскольку вы можете столкнуться с проблемами с элементами управления, накладывающимися друг на друга (формы Windows не очень хорошо работают с WPF, особенно с прозрачными пленками и другими визуальными элементами).

Пожалуйста, сообщите нам о состоянии этого проекта или предоставьте более техническую информацию, если вы хотите получить более конкретные рекомендации. Спасибо:)

Вы используете много пользовательских элементов управления для частей? WPF может содержать элементы управления winform, так что вы можете по частям вносить части в основную форму.

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

Взгляните на класс WindowsFormsHost в документации WPF.

Я предполагаю, что вы не просто жаждете, чтобы ElementHost разместил ваше обширное приложение Winforms. Это в любом случае не реальное портирование на WPF. Подумайте над ответами в этой теме. Какие большие препятствия необходимо преодолеть при переходе с Winforms на WPF? Это будет очень полезно.

Существует очень интересный технический документ по миграции приложения WinNET.NET 2.0 на WPF, см. " Переход к приложению.NET 3.5".

Аннотация статьи: В этой статье я собираюсь обрисовать некоторые мыслительные процессы, решения и проблемы, с которыми мы столкнулись при развитии приложения Microsoft .NET с 1.x/2.x до 3.x. Я посмотрю, как мы помогли нашему клиенту внедрить новую технологию, и в то же время сохранили график выпуска, приемлемый для бизнеса.

Другие вопросы по тегам