Разработка программного обеспечения WPF без MVVM - PullRequest
9 голосов
/ 14 января 2012

Мы хотим начать разработку промежуточного настольного программного обеспечения. Мы решили использовать WPF. Мы не хотим использовать шаблон MVVM. Потому что мы не знакомы с MVVM, а также ограничены во времени. Верно ли разрабатывать приложение WPF без шаблона MVVM (используя трехуровневую архитектуру, но без MVVM)? Хотя у него еще лучшая производительность, чем у победных форм?

Ответы [ 5 ]

15 голосов
/ 14 января 2012

Вам не нужно полагаться на MVVM при использовании wpf.На самом деле ключи для правильного использования wpf:

  • использовать команды вместо событий (вы можете сделать это, не осознавая этого, но проверьте, чтобы убедиться)
  • Используйте привязку данных вместо получениязначения от элементов управления напрямую
  • Установите контекст данных и привязайте его к нему вместо привязки к коду, стоящему за

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

Что касается производительности, то это действительно зависит от платформы, на которой запускается приложение, и от кодастиль.Если вы запустите его на компьютере без приличной видеокарты, то winForms, вероятно, будут работать лучше, потому что wpf, вероятно, вернется к программному рендерингу, который будет очень медленным.Если вам нужно сделать 3D-графику, тогда wpf - это действительно единственный вариант.

Чужая рекомендация НЕ использовать MVVM .

Пример кода проекта, каксделать MVP с wpf

2 голосов
/ 05 июля 2012

Вы можете разработать любое приложение с помощью WinForm и WPF без шаблона проектирования или шаблона приложения.

2 голосов
/ 14 января 2012

Вы, конечно, не должны полагаться на MVVM при использовании WPF / Silverlight.

Что касается разницы в производительности - она ​​может зависеть от стиля вашего кодирования, однако, если все сделано правильно, разница не должна быть заметной.

0 голосов
/ 24 декабря 2016

MVVM не требуется, но он решает некоторые распространенные проблемы с логикой представления.Например, рассмотрим свойство IsBusy ViewModel.Он устанавливается из любой операции, которая имеет длительность, и может быть использован из Command.CanExecute, чтобы сигнализировать связанным элементам управления, чтобы отключить себя, когда что-то работает.Одно свойство как для логики, так и для манипуляции пользовательским интерфейсом.Вы можете подумать о таких примерах, которые приведут вас к MVVM.Важно то, что предлагают привязки, а не сам шаблон.

0 голосов
/ 15 января 2012

Нет необходимости использовать MVVM. Можно использовать визуальный дизайнер для перетаскивания элементов управления n-drop на поверхность дизайна. Дважды щелкните по кнопке и получите обработчик события в коде. Давай не будем забывать установка свойств и обработчиков событий через PropertyGrid. Все точно так же, как в Winforms.

Без привязки данных DataContext не работает. Если вы хотите использовать привязку данных, первые примеры, которые я видел, установили Окно DataContext = это; в конструкторе. В этом случае окна действуют как свои собственные «ViewModel».

Вы также можете использовать MVVM с View-First. DI или IoC не требуются.

public class MyViewModel
{
}
public class MyWindow
{
    public MyWindow()
    {
        DataContext = new MyViewModel();
    }
}

Конечно, следующий шаг - реализация DI / IoC с использованием Unity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...