2016-03-08 13 views
0

Недавно я начал изучать экосистему Windows (C#, .NET, WPF и XAML), и, как и ожидалось, это совершенно другой мир. Одна вещь, которую я хотел бы начать делать с самого начала, - это создать мои приложения после шаблона MVVM, поскольку он, кажется, является стандартом для приложений WPF; Я искал хорошие учебники для новичков, и до сих пор я не нашел того, который показывает шаг за шагом, как реализовать MVVM.Использовать MVC вместо MVVM в Windows Presentation Foundation

Я немного поработал над программированием iOS, поэтому я привык к шаблону MVC, и мне было интересно, будет ли смысл следовать одному и тому же шаблону проектирования для приложений WPF.

Вот как я думал структурировать свой код, следуя шаблону MVC.

Model - Data Classes 
View - MainWindow.xaml 
Controller - MainWindow.xaml.cs 

Вы видите, неважно, проблема с файловой структурой выше?

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

Благодаря

+0

Возможный дубликат [В чем разница между MVC и MVVM?] (Http://stackoverflow.com/questions/667781/what-is-the-difference-between-mvc-and-mvvm) –

+1

Mainwindow.xaml и MainWindow.xaml.cs - это один и тот же класс, поэтому у вас действительно есть модель и вид. Это Document/DocumentView в MFC. Придерживайтесь MVVM. Учебник MVVM для трубки. – M312V

ответ

1

Я хотел бы использовать в качестве MainView.cs View, который вызывает методы внутри MainWindow.xaml.cs также использовать MainController.cs и использовать MainWindow.xaml.cs для вызова методов внутри класса MainController.cs. Когда вы разделяете MainWindow с вашего View и Controller с помощью IController и IView (Интерфейсы), вы можете легко его переносить. Итак:

MainWindow.xaml - это только файл макета.

Интерфейсы:

  • IView
  • IController

Классы:

  • MainWindow.xaml.cs использует IView
  • MainController.cs использует IController
  • MainView.cs использует IView
  • Model.cs

Использование: Если, например, нажата кнопка MainWindow.xaml.cs вызывает методы из MainController. Если вы хотите обновить, например. текст, который вы вызываете MainView, который вызывает MainWindow.xaml.cs. Если вы затем порт, например. Android, для которого нужно создать новый класс, который использует IView, вызывается вместо MainWindow.xaml.cs для обновления текстового поля. Также вы используете этот новый класс для вызова методов внутри MainController.

Edit:

IController просто нужен в особом случае, поскольку по протоколу TCP Connection я использовать другой класс контроллера, так что вы Propably только использовать некоторую IVIEW интерфейс.

+1

Большое спасибо за ваше предложение. –

Смежные вопросы