2013-09-23 6 views
13

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

Я новичок в WPF, и я читал, что независимо от того, что вы можете делать с XAML, вы также можете обойтись без него, имея в виду только код.

Конечно, у вас нет XAML при использовании Winforms. Можно ли использовать тот же код для приложения WPF, который я использовал для приложения winforms, и получить тот же результат? Или мне нужно создавать и редактировать XAML? В чем преимущества использования или отсутствия использования XAML?

Кроме того, учитывая прошлый опыт использования Winforms, следует ли мне как-то изменить способ, который я думаю о дизайне и реализации, который работал для Winforms, но не подходит для WPF?

+2

Почему вы хотите воссоздать его в WPF? –

+2

@SystemDown Я довольно новичок в WPF, как вы поняли из моего вопроса, и я знаю, что вы можете просто сделать все лучше, используя WPF. Почти никто не создает Winforms, если это не для некоторых очень маленьких, непрофессиональных вещей, и я хочу немного изучить WPF. –

+1

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

ответ

23

Нет, вы не можете повторно использовать код из winforms в WPF.

, и даже если бы вы могли, вы не должны.

все, что вы можете сделать с XAML, вы можете обойтись без него

Вы действительно должны использовать XAML для определения пользовательского интерфейса, а затем использовать DataBinding и MVVM, который является гораздо более профессиональным способом чем традиционный процедурный подход winforms.

Не использовать XAML гораздо труднее, чем использовать его. Вначале это может показаться пугающим, но это действительно потрясающая вещь для работы.

Конечно, что у вас нет каких-либо XAML при использовании Winforms

Нет, конечно, нет. winforms - действительно старая технология, которая ничего не поддерживает. Вот почему они создали дизайнер Visual Studio, иначе никто бы никогда не использовал winforms для чего-либо из-за ужасающего гигантского бегемотного количества кода, необходимого для использования чего-либо полезного.

Могу ли я использовать тот же код для приложения WPF, который я использовал для приложения winforms , и получить тот же результат?

Возможно, путем адаптации некоторых имен классов и еще чего-то, но тогда вы потеряете главное преимущество, предоставляемое WPF, которое точно избавляется от ужасного кода, подобного winforms.

учитывая прошлый опыт использования Winforms, я должен каким-то образом изменить так, как я думаю о разработке и реализации, что работал Winforms, но не то, что подходит для WPF?

Да. WPF поддерживает MVVM, и для этого требуется совершенно другой менталитет из традиционного подхода winforms.

Я настоятельно рекомендую прочитать Rachel's Excellent Post об обновлении от winforms до WPF.

+1

Я заметил, что сообщение, которое вы связали, имеет некоторые ссылки на него, о том, что вы написали. Возможно, у вас есть ссылки на статьи или то, что вы не можете по своему усмотрению? Я начал читать учебное пособие по адресу http://www.wpftutorial.net/ Вы случайно не знаете, хороший ли это источник? –

+0

@ YonatanNir в первую очередь, я бы порекомендовал пройти материал Рэйчел (связанный выше). –

1

Попытка создания элементов управления WPF без XAML запрашивает проблемы - вся структура построена вокруг шаблона MVVM, который требует, чтобы ваш вид описывался декларативно, а не процедурный. Хотя вы можете определенно создавать те же объекты пользовательского интерфейса в C# и XAML, для этого в C# вам потребуется знать (по-настоящему мучительно подробно), как работает система, чтобы компенсировать изменения состояния вашего пользовательского интерфейса. С другой стороны, если вы это сделаете, то XAML (как диктует WPF, вы должны), тогда вещи обычно обновляются просто отлично и без необходимости работать с бесконечными ошибками. Короче говоря, «да» вы можете сделать это в коде, но «нет» вы не можете сделать это в коде, не теряя рассудок.

2

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

Хорошая основа для начала работы - это MVVMLight, но стоит написать основы без рамки, чтобы узнать, как все работает в первую очередь.

Кажется, я помню это существо хороший набор сообщений из тростника Copsey: http://reedcopsey.com/series/windows-forms-to-mvvm/

+0

Я начал читать учебное пособие по адресу http://www.wpftutorial.net/ Вы случайно не знаете, является ли это хорошим источником информации о предмете? –

1

На самом деле это зависит от того, насколько сложным является ваш проект. Для довольно небольшого проекта вы можете сделать это «преобразование» довольно просто. Но это не очень хорошая практика, даже потому, что разработка WPF часто основана на MVVM/Prism, и они дают вам много преимуществ. Также поведение вашего пользовательского интерфейса может отличаться - это зависит от сложности вашего проекта.

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