Здесь я пытаюсь ответить на очень простые наивные термины о некоторых вопросах WPF, с которыми сталкиваются новички / разработчики winforms, и о том, с чем я столкнулся, когда начинал с WPF. В Интернете есть много статей и учебных пособий, которые дают достаточно знаний, но трудно найти ответы на очень простые вопросы. Я пытаюсь решить это здесь.
Что такое WPF?
Windows Presentation Foundation по мере расширения; это система «Презентация» для создания оконных приложений. Если вы - разработчик winforms, главное отличие, которое вы найдете в WPF, заключается в том, как выглядит дизайнер. В отличие от winforms код конструктора - это не код C #, а код XAML.
Почему WPF?
Ну, главная причина, по которой WPF предпочтительнее, чем winforms, заключается в том, что WPF предоставляет богатый пользовательский интерфейс.
Помимо этого, есть много других преимуществ, которые предоставляет WPF, он более четко доступен во многих учебных пособиях в Интернете.
Это векторный движок рендеринга. Если сравнивать пользовательский интерфейс приложения winform и приложения WPF, разница между внешним видом и интерфейсом будет очевидна.
Что такое MVVM?
MVVM - это шаблон, который адаптируется при разработке приложений. Он расширяется как «Model View View Model», в основном при структурировании проекта у нас есть папка модели, в которую будут помещены все файлы модели (.cs), в папке модели представления все файлы viewmodel (.cs) будут помещен и под папкой просмотра будут помещены все файлы представления (.xaml).
Если используется MVVM, то не будет никакого кода, означающего, что в файле .xaml.cs не будет никакого кода, кроме автоматически созданного метода.
Модель : Модель имеет часть бизнес-логики, которая поддерживает модель представления данными, которые в конечном итоге будут представлены в представлении.
ViewModel : у каждого вида будет модель вида. Viewmodel будет реализовывать интерфейс INotifyPropertyChanged и будет иметь все свойства, которые связаны с соответствующим представлением. Модель представления не загружена какой-либо бизнес-логикой, и ответственность лежит на модели.
View : View - это не что иное, как файл xaml, в котором спроектировано окно. XAML - это язык разметки. В WPF, в отличие от winforms, каждый элемент управления будет связан со свойством зависимости либо предопределено, либо определено пользователем.
Почему MVVM?
Всякий раз, когда приложение разрабатывается в WPF, MVVM всегда пригодится. Одним из самых больших преимуществ использования MVVM является то, что он делает возможным независимое от UI модульное тестирование, поскольку во время модульного тестирования нет кода, не требующего объектов, связанных с UI, и, следовательно, возможно 100% покрытие кода.
В модульном тесте «команды» (ищите команды в wpf) могут быть переданы пользователем для проверки конкретного варианта использования.
Требуется ли мандат или абсолютно необходимо использовать MVVM при работе с WPF?
Я бы сказал, нет, не обязательно использовать MVVM при работе с WPF, однако это зависит от требований. Нужно взглянуть на преимущество, которое дает MVVM, и затем решить, идти с ним или нет. MVVM добавляет сложность в первые дни разработки, но в конечном итоге это дает свои преимущества.
Если законченное приложение находится в winforms, и в WPF разрабатывается только небольшой модуль, а не небольшая функция, тогда нет необходимости следовать MVVM, можно с радостью иметь код и получать богатый опыт пользовательского интерфейса. Еще раз повторю, это полностью зависит от типа требования.
Могу ли я иметь несколько моделей представлений для одного представления / несколько представлений для одной модели представления?
ЭтоВопрос, на который у меня нет четкого четкого ответа ни в одном сообществе .net. Прежде всего, поскольку мы увидели, что основной целью перехода на MVVM является достижение 100% покрытия кода, это делает очевидным, что мы будем тестировать каждую модель представления независимо, и, следовательно, тестируется полная форма. Имея это в виду, лучше выбрать один вид и один видмодельный подход.
Мы всегда можем общаться между моделями представления, если есть необходимость, используя MVVM Light messenger или любым другим способом, который облегчает это.
В чем разница между моделью и моделью?
Это один вопрос, который всегда будет у начинающих, поскольку они не находят большой разницы между ними. Вот разница:
Модель - это не что иное, как класс, который имеет методы данных для изменения данных, которые будут использоваться в модели представления и в конечном итоге привязываться к представлению.
ViewModel просто имеет свойства, которые будут привязаны к представлению. В методах get или set можно вызвать метод в модели для получения данных. Опять же, эта модель для этой конкретной модели представления.
Теперь вы можете решить, нужен ли вам класс модели, если нет тяжелой бизнес-логики, тогда вы можете избежать класса модели и поместить его в модель представления, но более чистым будет использование класса модели.
В MVVM можно ли пропустить модель вида или класс модели для вида?
Опять же, это зависит от требования, как было упомянуто ранее, если нет тяжелой бизнес-логики, тогда вы можете избежать класса модели и поместить его в модель представления, но более чистый подход будет использовать класс модели.