какая из них является хорошей практикой в шаблоне MVVM в wpf?

1

Я хочу разработать свой проект wpf, используя шаблон MVVM. Должен ли я создать новую папку для разделения Model, View, ViewModel или создать новый проект для каждого? Какая из них хорошая практика? Я загрузил образец проекта, некоторые из проектов имеют отдельную папку для него, а некоторые из них имеют отдельный проект для каждого. Я сослался на эту ссылку. Но это не ясное сомнение. Я спрашиваю, является ли создание новых проектов Model, view и viewmodel хорошей практикой или создание новой папки?

Теги:
wpf
mvvm

4 ответа

2

Это дублированный вопрос, так как вы можете найти здесь ответ Шеридан, чтобы он был наиболее полезным.

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

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

РЕДАКТИРОВАТЬ

Ответ - нет, вам никогда не нужно создавать папки или отдельные проекты для вашего проекта. Просто поймите, что создание новых class в другой папке также будет использовать этот путь как пространство имен. Поэтому, если вы создаете папку ViewModels и добавляете class в эту папку, вы увидите namespace WpfApplication1.ViewModels вверху. Это также означает, что вам нужно будет обратить внимание на места пространств имен в ваших файлах XAML. Если вы хотите ссылаться на тип в папке ViewModels в файле XAML, вам нужно будет сделать что-то вроде <xmlns:vm="clr-namespace:WpfApplication1.ViewModels">. Недостатком является то, что если у вас есть папки в ViewModels вам также нужно ссылаться на это пространство имен в вашем XAML. Поэтому, если бы были ViewModels> Basics, вам понадобилось бы пространство имен в XAML, поскольку вы не можете ссылаться на все поддиременты в одном объявлении xmlns.

<xmlns:vm="clr-namespace:WpfApplication1.ViewModels">
<xmlns:vmBasics="clr-namespace:WpfApplication1.ViewModels.Basics">

Альтернативой является использование папок и переименование пространств имен классов только в простое namespace WpfApplication1 тогда вам просто потребуется одно объявление xmlns и вы сможете получить доступ ко всем типам приложения.

<xmlns:app="clr-namespace:WpfApplication1">

Таким образом, не затрудняйте вещи, если они не нужны; и, как правило, ничто на этапах обучения не будет настолько сложным, что ему необходимо несколько проектов. Папки являются необязательными, но понимают побочные эффекты/обходные пути, если вы их используете.

  • 0
    Да, эта ссылка полезна, но мой вопрос немного другой. Я спрашиваю, нужно ли мне создать другой проект для модели, вида и модели или создать новую папку для каждого.
  • 1
    @MohiniMhetre см. Правки :)
Показать ещё 4 комментария
1

Обычно я создавал папки для просмотра, ViewModel и т.д. Затем я давал описательные имена для просмотров и классов viewModels. Если у вас есть несколько страниц, я бы предложил иметь подпапки. Все идет в одном проекте. Но это мое предпочтение.

например:

Просмотреть> Продажи> WelcometoSalesPageView.xaml

ViewModel> Продажи> WelcometoSalesPageViewModel.vb

1

Это будет зависеть от вашего варианта использования. У вас есть сценарий, в котором ваши взгляды, модели и модели просмотра могут быть повторно использованы в другом проекте? Что я имею в виду, например, у вас есть сценарий, в котором вы бы использовали только ваши модели в каком-то другом проекте. Если да, то имеет смысл создавать отдельные проекты, чтобы их можно было повторно использовать. Если это не так, лучше держать их всех в одном проекте.

1

Папки предназначены только для создания структуры и для упрощения идентификации. На самом деле нет необходимости иметь папки для View и ViewModel.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню