2009-02-10 2 views
14

У меня также есть настольное приложение, написанное в Windows Forms, которое является средним размером (несколько десятков основных форм, поддерживаемых 46 таблицами в базе данных). Я думаю о переписывании пользовательского интерфейса в WPF, но перед тем, как я поеду туда, мне было любопытно, есть ли какие-либо военные истории о таком преобразовании.Миграция из Windows Forms в WPF ... Стоит ли это того?

Я использую LLBLGen для создания объектов доступа к низкоуровневому уровню, и у меня выше уровня бизнес-логики. Формы представляют собой привязку данных к объектам бизнес-логики, хотя основная форма использует кеширующие объекты для минимизации маршрутов на более общих маршрутах навигации. UI never говорит напрямую с базой данных: всегда через интерфейс пользователя -> бизнес-логика -> низкий уровень -> путь к хранилищу данных.

Одним из элементов управления, которым я пользуюсь, является TreeView, который действует как визуальный гид и инструмент для навигации на короткие расстояния. Дерево было в значительной степени настроено с помощью значков, выделяющих цвета, и это элемент управления, который больше всего беспокоит портирование.

Есть ли история, которая может убедить меня пойти и преобразовать (или, наоборот, подождать, пока Microsoft приблизится к вытаскиванию ковра из-под Windows Forms)?

EDIT: меня спросили в комментарии, какая мотивация для преобразования у меня есть. Я беспокоюсь о будущей проверке: у меня есть 500 000 строк кода, которые первоначально были ASP и VBScript. Мы переносили функциональность с течением времени на ASP.NET и C#, но только по мере внесения изменений в код. Положительный результат заключается в том, что мы минимизировали издержки, недостатком является половина кода, который остается ASP и VBScript. Меня беспокоит аналогичная ситуация, возникающая в приложениях Windows Forms.

Я обеспокоен сегодня о Windows Формы уходят? Даже близко к нему ... но приложение переходит от ASP и VBScript к ASP.NET и C#, имеет за собой девятилетнюю историю и, вероятно, не будет заменено в этом десятилетии (вместо этого оно просто будет развиваться). Настольное приложение также является долгосрочным проектом с многолетней историей.

+0

Скорее всего, Microsoft не будет обесценивать WinForms в течение довольно долгого времени. Фактически, я бы рискнул сказать, что он никогда не будет устаревать до замены API Win32. – user62572

+0

В чем причина конвертации? – user62572

+0

Возможный дубликат [WPF в сравнении с Windows Forms] (http://stackoverflow.com/questions/202079/wpf-versus-windows-forms) –

ответ

3

WPF отличный. Это особенно полезно для расширения элементов управления, таких как TreeView, с настройками. Вы можете добавить строку в качестве элемента в TreeControl. Вы также можете добавить небольшую панель, содержащую изображение и текст в разных шрифтах и ​​цветах. Или вы можете добавлять кнопки или что угодно. Он имеет полностью общую систему компоновки. То же самое касается ListBox, ComboBox, Button и т. Д. Все их содержимое или дочерние элементы могут быть такими же простыми, как строка или сложнее, как просмотрщик многостраничных документов с кнопками масштабирования (если хотите).

Но единственный способ узнать - попробовать портировать одну из форм. Не должно быть слишком сложно сделать окно WPF открытым из вашего существующего приложения. Я начал использовать WPF, создав новые панели графического интерфейса, которые были размещены внутри приложения C++ Win32. В конце концов это было настолько очевидно, что WPF был способ пойти, что мы переключили его и создали внешнюю оболочку WPF, с некоторыми древними диалоговыми окнами, которые все еще реализуются старым кодом на C++, где мы не могли бы переписать их (возможно, именно то, что произойдет с Visual Studio 2010).

+0

Мне нравится идея размещенных элементов управления: она позволяет безболезненно опробовать элементы управления WPF, не требуя полной перезаписи, и сохраняет более сильно кодированные страницы пользовательского интерфейса из-за вреда. – Godeke

+0

Также не чувствуйте, что вам нужно делать все в XAML. Существует много шумихи вокруг разделения презентации и модели, но для многих приложений это не является необходимым или даже значимым. Также вам придется нанять опытного дизайнера XAML. Если вы этого не сделаете, используйте язык, с которым вы больше всего знакомы. –

9

Для меня решение WinForms против WPF является простым: если обычные люди будут его использовать, пользовательский интерфейс может сделать разницу между победителем и проигравшим.

Это определенно крутая кривая обучения. Но я НИКОГДА не получил работу с красивым приложением WPF и сказал: «Человек, я должен был использовать WinForms».

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

+0

Что делает пользовательский интерфейс WPF выше интерфейса WinForms в вашем опыте? I.e, что было бы хорошим местом, чтобы указать как водитель ROI? – Godeke

+0

Более качественная графика (градиенты на все, прозрачность и т. Д.) И раскадровки. В основном думайте о минимизации окна - если он просто исчез или «летит вниз к панели задач». Анимация помогает связывать функцию. – Brandon

+1

Хммм. Я в страховой сфере: доллар возвращает функцию связи. Градиенты, прозрачность и «летающие окна» сообщают слишком много блеска и свободного времени :) – Godeke

8

WPF имеет смехотворно большую кривую обучения. Скорее всего, вам потребуется переписать гораздо больше, чем вы думаете, просто изменив интерфейс. Кроме того, многие функции, которые сделают WPF более приятным в использовании, еще не реализованы или не включены в WPF. Unlike routeNpingme, я написал красивые приложения WPF и сказал: «Какая пустая трата времени, я должен был использовать Windows Forms и завершить на 70% меньше времени».

EDIT: Кроме того, если Microsoft не выяснит способ сделать WPF легче учиться, я не вижу его ловить на массы вообще. WPF может делать очень классные вещи, но небольшое усилие, чтобы упростить понимание, а не бросать вещи через стену, проделало бы долгий путь. Меня нисколько не удивило бы, чтобы Microsoft потеряла WPF для чего-то более легкого в работе в недалеком будущем. Поэтому не меняйте приложение Windows Forms только ради его изменения.

+0

Существует ли конкретный аспект кривой обучения, который вы замечаете (инструменты разработчика, правильная привязка данных, производительность ... что-то еще)? – Godeke

+1

XAML и все маленькие нюансы являются основным препятствием. Если вы испортили XAML, поддержка инструмента крайне слаба, помогая найти проблемы. Обычно вы просто получаете текстовое сообщение, сообщающее вам о наличии ошибки, но не указав, где может быть ошибка. – Dunk

1

Портирование - это трудное решение.Вот только некоторые мысли, которые помогут вам решить.

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

Кроме того, привязка данных в WPF экономит мне много времени. В долгосрочной перспективе вы в конечном итоге задумываетесь о сценариях привязки данных, которые не могут быть удаленно доступны в WinForms без специального кодирования.

Я даже не рассматриваю WinForms для новой разработки - нет оправданий для затрат на настройку.

+0

Единственный пользовательский чертеж, который мы делаем, - это TreeView, и все это делается с использованием растровых изображений, цветов и изменений шрифтов (например, для зачеркиваний). Остальные - довольно простые привязки данных к элементам управления запасами, хотя у меня есть некоторые «редакционные» диалоги, которые я бы хотел оптимизировать. – Godeke

5

Плюсы:

  • Смехотворно легко связывания данных (большую часть времени)
  • Смехотворно легко настройка выглядеть и чувствовать себя

Минусы:

  • Очень крутой обучения кривая
  • Некоторые очевидные ошибки или проблемы , Подобно .NET 1.0 Windows Forms
  • мало или нет поддержки инструмента

На мой взгляд, WPF обязательно заменить Windows Forms в какой-то момент. Однако сейчас инструменты - это главное, чтобы сохранить его. Я не согласен с Dunk, что Microsoft откажется от чего-то другого. Измените его, да, но я думаю, что он здесь, чтобы остаться.

Следует ли изменить приложение для использования WPF? Нет. Не стесняйтесь изучать WPF, но если ваше приложение отлично работает в настоящее время, WPF не даст вам ничего лишнего. Это просто упрощает работу с Windows Forms.

+0

Похоже на хорошее время, чтобы экспериментировать, но, возможно, еще не успел совершить все. – Godeke

1

Я начал вводить элементы WPF в моем приложении WinForms и до сих пор имел большой успех.

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

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

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

0

Основная ценность WPF для меня - в привязке, а не в более крутом интерфейсе. Худший WPF, который я когда-либо видел, - это когда люди используют WPF только потому, что он новее, и поместили всю работу в код, в том числе не используя привязку. Вы получаете управление данными WinForms. Поэтому убедитесь, что вы собираетесь использовать замечательную привязку, когда вы делаете WPF.

Я бы поместил бизнес-логику OP на бизнес-уровень для удобства обслуживания и преобразования. Я бы не переносил WinForms на Xaml вообще, если не требовалась новая функциональность Xaml, и предпочтительно, только после того, как функциональность была перенесена.

Смежные вопросы