Какой самый простой способ обновить большое приложение C # winforms до WPF - PullRequest
13 голосов
/ 21 сентября 2008

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

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

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

Ответы [ 5 ]

11 голосов
/ 22 сентября 2008

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

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

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

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

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

3 голосов
/ 21 сентября 2008

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

2 голосов
/ 22 сентября 2008

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

2 голосов
/ 21 сентября 2008

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

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

1 голос
/ 21 сентября 2008

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

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

...