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

StackOverflow https://stackoverflow.com/questions/111817

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Затем вы можете использовать элемент управления <WindowsFormHost /> для размещения вашего текущего приложения.Затем я предлагаю создать библиотеку ваших новых элементов управления в WPF.Вы можете создавать элементы управления по одному за раз (я предлагаю сделать их пользовательскими элементами управления, а не usercontrols).В рамках стиля для каждого элемента управления вы можете начать с использования элемента управления <ElementHost /> для включения "старого" элемента управления Windows forms.Затем вы можете потратить свое время на рефакторинг и воссоздать каждый элемент управления как завершенный WPF.

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

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top