Подтвердить что ты не робот

Что должен знать разработчик С# перед использованием WPF

Я больше системный администратор и веб-мастер, чем разработчик, но иногда я разрабатываю, в том числе С#, в основном используя Winform (и, возможно, GTK +).

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

stackoverflow изобилует подобной темой, и я внимательно прочитал тех, кто похож:

Но, когда кто-то начнет с WPF от Winform, в чем отличия, на которые он должен обратить внимание?

[EDIT]

  • Как насчет некоторых советов/ссылок для LINQ с WPF?
  • Как насчет некоторых советов/ссылок WPF Navigation?
4b9b3361

Ответ 1

Спасибо всем, но все это немного размыто, поэтому я сделал компиляцию ресурсов и добавил некоторые вещи своими силами, пожалуйста, скажите мне, что вы думаете (или улучшите, я сделаю это Community Wiki)

Странно, что никто не говорил о LINQ, который, казалось, был центральным элементом этой технологии.

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

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

RTFM

Программное обеспечение

Сообщения в блоге

Видео

Проект кода

Книги:

Другие темы

Ответ 2

WPF полностью отличается от других систем.

У меня есть несколько лет работы WinForms, Win32 и веб-программирования, и я считаю, что мой опыт веб-программирования помог больше всего.

Что касается книг, "" Windows Presentation Foundation Unleashed" от Адама Натана, Sams Publishing очень помог мне.

Ответ 4

Я согласен с Арсением, изучение MVVM - это основа для правильного обучения WPF. Это не нишевая вещь - при правильном применении она может сделать ваш код чище, проще и способствует развязке и модульному тестированию.

Здесь есть очень приятное видео, в котором объясняются как концепция, так и реализация: Jonas Follesø объясняет шаблон проектирования MVVM. В видеоролике парень говорит о Silverlight, но реализация в WPF в значительной степени идентична.

Как только вы просмотрите видео, и вы довольны основами WPF, вы можете сделать намного хуже, чем принять фреймворк, чтобы взять большую часть тяжелой работы и сантехники с ваших рук. Я настоятельно рекомендую Caliburn Micro. Это приведет вас к пути наилучшей практики, поощряя вас использовать MVVM, но также позаботится о большей части деталей кодирования для вас. Документация на сайте немного тонкая на земле, но есть ряд учебников, которые постоянно добавляются.

Например, при выполнении MVVM вы обычно должны иметь вид (например, окно) и ViewModel (класс С#). Если у вас есть текстовое поле в представлении, содержащем номер заказа, у вас будет соответствующее свойство в вашей ViewModel с названием OrderNumber. Использование выражения привязки WPF:

<TextBox x:Name="OrderNumber" Text="{Binding OrderNumber}" />

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

<TextBox x:Name="OrderNumber" />

Как и выше, ваш XAML становится намного проще, и вы должны сосредоточиться на выполнении работы. Хотелось бы, чтобы я нашел фреймворк, подобный этому, прежде чем я начал собирать много собственных классов ViewModelBase, ViewLocaters и т.д.

Ответ 5

Я также предлагаю Sacha Barber блог и все его статьи, связанные с WPF, в codeproject. Этот парень потрясает!

Ответ 6

Самое главное, что разработчик Winforms/С# должен знать/принимать, - это то, что WPF сильно отличается от winforms и способ Winforms делать вещи не является правильным способом делать что-то в WPF.

Я видел много разработчиков WinForms, использующих events/delegates и threads для решения каждой проблемы, а не для использования Binding, commands, triggers и т.д.