MVVM / Презентационная модель с WinForms - PullRequest
4 голосов
/ 15 сентября 2009

В настоящее время я работаю над приложением brownfield, оно написано с помощью winforms, В качестве подготовки к использованию WPF в более поздней версии наша команда планирует по крайней мере использовать Модель MVVM / Presentation, и связать ее с winforms ...

Я изучил эту тему, включая посты на этом сайте (которые мне очень нравятся), при отрыве главное преимущество wpf:

  • привязка элементов управления к свойствам в xaml.
  • привязка команд к объектам команд в модели представления.

первая функция проста для реализации (в коде) или с помощью общего связующего элемента управления, связывающего все элементы управления в форме.

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

Проблемы, о которых я сейчас знаю:

  • реализующий менеджер команд (который вызовет метод CanInvoke для команд как необходимый.
  • winforms поддерживает только один уровень привязки данных: источник данных, datamember, wpf гораздо более гибок.

мне не хватает других важных функций, которых нет в winforms по сравнению с wpf, при попытке реализовать этот шаблон проектирования?

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

Заранее спасибо, Эрик.

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

Вы можете найти WAF Windows Forms Adapter . В нем показано, как применить шаблон Model-View-ViewModel (MVVM) в приложении Windows Forms. Реализация адаптера обеспечивает решение для отсутствующей поддержки Command в Windows Forms.

1 голос
/ 29 сентября 2009

Пожалуйста, посмотрите на Обновление элементов управления .NET . Это библиотека с открытым исходным кодом для Winforms, WPF и Silverlight, которая постоянно обновляет элементы управления при изменении данных. Вы можете начать использовать его сейчас для Winforms, а затем перейти к WPF без изменения вашей модели данных или кода модели представления.

К сожалению, это не решает проблему привязки команд Winforms. Ваши события нажатия кнопки не будут переноситься из Winforms в WPF. Но это решает проблему привязки данных.

...