Какие большие препятствия нужно преодолеть при переходе с Winforms на WPF? - PullRequest
6 голосов
/ 21 сентября 2008

Я занимаюсь разработкой приложений Winforms для C # уже несколько лет и был заинтересован в продвижении будущей разработки к WPF, в основном из-за положительных моментов, о которых я слышал. Но мне интересно, с какими трудностями пришлось столкнуться другим людям при переходе на WPF. Был ли значительный удар по вашей производительности или какие-то конкретные проблемы, которые вы считаете сложными?

Ответы [ 8 ]

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

Я не уверен, что могу дать вам только одно препятствие, потому что это полный уход от WinForms. Я предлагаю получить WPF Unamashed Адама Натана, забыть все, что вы знаете о создании пользовательских интерфейсов с любой предыдущей технологией (Winforms, MFC, Java), и начать сначала с нуля.

Если вы попытаетесь сделать это любым другим способом, это вызовет полное разочарование.

ETA: причина, по которой я говорю просто начинать с нуля, в том, что иногда легче выучить новые концепции, если вы идете с чистого листа. В прошлом я обнаружил, что я могу быть своим худшим врагом, когда дело доходит до изучения чего-то нового, если я пытаюсь донести знания от технологии до технологии (например, думая, что веб-сервисы asmx в течение многих лет мешают мне читать первую пару главы книги WCF).

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

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

Определенно был значительный удар по моей производительности (настолько значительный, что мне пока не нравится идея пойти к моему работодателю и сказать: «позвольте мне сделать это с WPF вместо Winforms»). Я не думаю, что никогда туда не доберусь, но мне нужно развить дополнительный комфорт с помощью этой практики в свое личное время.

Я не сталкивался с какими-то конкретными проблемами, которые мне показались более сложными, чем другие. Я верю, что Адам Натан WPF Unleashed упоминался в другом месте, и это, безусловно, стоит прочитать. Я также слышал хорошие вещи о книге Чарльза Петцольда , хотя я не могу лично за это ручаться.

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

Я в одной лодке. Я так долго программировал, используя winforms. Теперь я решил, что изучу WPF и начну все делать с ним. Самым сложным для меня является привыкание к использованию XAML в основном для пользовательского интерфейса, а не для кода C #, и многие свойства в WPF отличаются. (IE - чтобы изменить текст метки, вы должны изменить свойство Content). Поэтому моя самая большая проблема состоит в том, чтобы вытащить мою голову из winforms и полностью изменить ее мышление.

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

Если в приложении WinForms определена правильная архитектура объектной модели (больше похоже на архитектуру модели MVC), я думаю, что миграция пользовательского интерфейса в WPF займет не много времени. WPF организовал свои визуальные элементы иерархически (VisualTree), а RoutedEvents и RoutedCommands - совершенно новые концепции в WPF. и, очевидно, есть еще такие вещи, как DataTemplate / Controltemplate, все они находятся на уровне XAML. Все это делает очень мощный и простой способ для достижения отличного пользовательского опыта. Итак, мое главное замечание заключается в том, что вы можете ожидать, что только ваша объектная модель может быть повторно использована (с некоторыми изменениями) в WPF, а все остальное в проекте Winforms необходимо скинуть. не нуждается в модификации (Comunication Layer / DataLayer)

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

На веб-сайте Microsoft Learning есть полезное введение, которое, я считаю, доступно бесплатно, если у вас есть учетная запись Microsoft Passport https://www.microsoftelearning.com/eLearning/courseDetail.aspx?courseId=85488

1 голос
/ 21 сентября 2008
  1. Вы не можете отключить сглаживание .
  2. Вашим пользователям нужна Vista или XP SP2 с .net 3.x framework.
  3. Если вы хотите использовать winforms, знайте о воздушном пространстве (одно решение для D3D здесь ).

Это главные проблемы для меня. Кроме этого, я все для этого, его путь больше, чем выглядит.

0 голосов
/ 25 декабря 2008

Даже с опытом более 20 лет я обнаружил, что у WPF крутая кривая обучения. Я пытался сделать свой последний проект с использованием WPF, но отсутствие встроенных элементов управления (например, NumericUpDown) и проблемы с получением DataBinding для работы с бизнес-объектом заставили меня вернуться к Winforms для этого проекта, но я надеюсь, что будущие проекты сделаю с Это. Почти весь код, который я написал (против того, что сгенерировал дизайнер), можно было использовать повторно, когда я переключался между WPF и Winforms.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...