Какая структура MVVM – лучшая структура для приложений WPF

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

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

Одной из самых популярных фреймворков MVVM является MVVM Light Toolkit , которая представляет собой универсальную структуру, которая позволяет вам создавать приложения так, как вы хотите. Это помогает справиться с некоторыми основными причинами боли при создании MVVM-приложений, но для этого требуется написать много кода шаблона самостоятельно. Это может быть полезно для нового разработчика WPF, поскольку он не скрывает столько инфраструктуры WPF.

Мой личный фаворит – Caliburn.Micro , который является самоуверенным MVVM-каркасом для WPF, Silverlight и Windows Phone 7. Он использует подход с привязкой к конфигурации, который избавляет вас от написания большого количества скучного, утомительного сантехнического кода. Это также означает, что это требует, чтобы вы согласились с мнением структуры – если вы не следуете конвенциям, которые он предписывает, вы будете бороться с тяжелой битвой, чтобы все работало.

Caliburn.Micro также имеет качество работы , и если вы действительно не понимаете, что происходит под капотом, все может показаться немного волшебным. Это здорово, пока все работает. Но когда они этого не делают, или вам нужно что-то сделать, frameworks не предназначены для этого, вам потребуется довольно прочное понимание WPF, чтобы найти ваши ориентиры.

Вам необходимо оценить возможности различных рамок и наборов инструментов и решить сами.

Существует много популярных open source MVVM-фреймворков.

Вероятно, тремя наиболее популярными будут MVVM Light , Caliburn или Prism (которые с версии v4 поддерживают и предоставляют примеры MVVM). У всех троих есть сильные и слабые стороны, и все они хороши.

Преимущество Prism заключается в том, что он является «Microsoft» (спонсируемым) продуктом, так как он выпущен группой Microsoft Patterns and Practices. Это, как правило, способствует принятию на многих крупных предприятиях. Это, как говорится, также намного больше и сложнее, чем другие популярные варианты, тем более что его целью является не просто «MVVM Framework», а скорее универсальная библиотека для разработки сложных приложений.


Я новичок в WPF.

Я также подумал, что хочу упомянуть – прежде чем вы выберете фреймворк, я потрачу некоторое время на то, чтобы действительно изучить и понять MVVM. Я написал серию, чтобы помочь перейти к WPF с MVVM из Windows Forms, что может иметь значение.

Часто его трудно выбрать frameworks, пока вы не поймете, что это действительно делает. Большинство MVVM можно сделать очень легко, без каких-либо фреймворков. В «фреймворках» добавляются утилиты, которые облегчают управление определенными болевыми точками разработки MVVM, например, MVVM Light обладает отличным classом Messenger, который помогает в обмене данными между ViewModels, что может быть сложным в разы. У Caliburn есть несколько отличных инструментов, которые помогут вам с удобством и т. Д. Однако, пока вы не поймете основы, выбор инструментария может сделать вашу жизнь более сложной, а не простой.

Может быть, для того, чтобы получить удовольствие от MVVM, вам вообще не нужно использовать какие-либо библиотеки? Легко реализовать основные вещи (DelegateCommand и class для получения уведомлений о свойствах – это все, что вам нужно), но это поможет вам понять MVVM без введения какой-либо библиотеки. Вероятно, вы столкнетесь с некоторыми препятствиями во время этой реализации, и вам придется решать ее самостоятельно, без каких-либо сторонних библиотек. Я считаю, что это может помочь вам разработать более четкое представление о структуре MVVM (конечно, если у вас будет хорошее руководство), но без введения специфических особенностей, предоставляемых библиотеками.

Может быть, я немного изобретатель колес, но я до сих пор не использую никаких библиотек MVVM. Я просто не вижу ничего хорошего, что они могут предоставить, чтобы представить еще одну библиотеку в проекте. Обычно для реализации базового материала, необходимого для MVVM, не требуется многого, но в конце вы получаете очень гибкий код (потому что весь код принадлежит вам).

  • Преобразовать System.Windows.Media.ImageSource в System.Drawing.Bitmap
  • Как установить и изменить культуру в WPF
  • Как перебрать строки инструментария WPF Datagrid
  • WPF TextBox Validation C #
  • WPF - Настройте фокус при нажатии кнопки - Без кода
  • Изображение кнопки мыши WPF
  • Синхронизированная прокрутка двух ScrollViewer, когда любой прокручивается в wpf
  • WPF - Как заставить команду переоценить «CanExecute» через свой CommandBindings
  • WPF Databinding: как мне получить доступ к «родительскому» контексту данных?
  • WPF MVVM TreeView SelectedItem
  • DependencyProperty getter / setter не вызывается
  • Interesting Posts

    Есть ли способ, чтобы один конфигурационный файл SSH включал другой?

    Как преобразовать int в Integer в Java?

    Как отобразить маршрут между двумя геокоординатами на картах Google?

    Как перенаправить субдомены без указания домена?

    Как сделать учетную запись пользователя Windows, которая ничего не может изменить?

    Новая виртуальная машина не подключается к Интернету, какая настройка мне нужна в VMWare Fusion?

    Клавиатура не позволяет мне одновременно нажимать определенные клавиши

    Загрузка нового fxml в ту же сцену

    Как предотвратить автоматическое прочтение ноутбука Windows 7?

    Рекурсивно обращаться к dict через атрибуты, а также доступ к индексу?

    java.lang.UnsupportedClassVersionError Неподдерживаемая версия major.minor 51.0

    Лучше ли использовать смещение или вручную установить напряжение ЦП (относительно долговечности ЦП)?

    Отменить действие передачи ASCII ftp

    Заменить новую строку в TSQL

    Уникальные строки, считая два столбца, в R, без заказа

    Давайте будем гением компьютера.