2010-10-19 5 views
5

Одно из наших устаревших приложений работает в VB.net (3 уровня), а DataTable используется как DTO. Но мы хотим конвертировать приложение с использованием архитектуры WPF, MVVM. Могу ли я реализовать MVVM, используя Datatable как DTO, или я должен создавать классы для представления этих данных и реализовать MVVM-архитектуру. ?MVVM с использованием DataTable?

ответ

2

В MVVM ничего нет, что исключает использование DataTable/DataSet в качестве модели. «M» в MVVM может быть чем угодно. Это V и VM, которые более четко определены. Просто запустите ViewModel как посредник для вашего представления и базового DataRow. Это не должно быть сложнее, чем если бы в вашей модели были созданы классы веб-сервисов.

+0

k, thnx. В классе мы можем реализовать INotifyPropertychanged, и даже мы можем написать обратные вызовы, принуждение и т. Д. Но в Datatable или DataRow, как мы можем идентифицировать уведомление об изменении? Вот почему мне задали этот вопрос –

+0

У DataTable есть событие RowChanged, которое вы могли бы использовать. Но вам, вероятно, не нужно его использовать. ViewModel может поднять события PropertyChanged по мере необходимости. DataRow не должен слишком сильно меняться под ViewModel, если ViewModel контролирует данные, поступающие в DataRow и выходящие из него. – Josh

1

Изучите различия между использованием модели с анемией и богатой моделью в MVVM. В анемичной модели; это то, что вы получаете с datatable, вы реализуете свойства и подключаете все события INotify в вашей виртуальной машине. Если вы идете по богатому модельному маршруту, например, строите свои бизнес-объекты или используете инфраструктуру, такую ​​как CSLA, то вы получаете гораздо больше действий от своей модели, а ваша виртуальная машина намного меньше/проще.