2010-10-19 36 views
5

Một trong những ứng dụng kế thừa của chúng tôi đang chạy trong VB.net (3 tầng) và DataTable được sử dụng làm DTO. Nhưng chúng tôi muốn chuyển đổi ứng dụng bằng cách sử dụng kiến ​​trúc WPF, MVVM. Tôi có thể thực hiện MVVM bằng cách sử dụng Datatable như DTO hoặc tôi có để tạo ra các lớp học để đại diện cho các datatable và thực hiện kiến ​​trúc MVVM. ?MVVM bằng DataTable?

Trả lời

2

Không có gì trong MVVM ngăn cản việc sử dụng DataTable/DataSet làm mô hình của bạn. 'M' trong MVVM có thể là bất cứ điều gì thực sự. Đó là V và VM được xác định rõ ràng hơn. Chỉ cần có hành động ViewModel của bạn như là đi-giữa cho View của bạn và DataRow cơ bản. Nó không phải là bất kỳ phức tạp hơn nếu mô hình của bạn đã được tạo ra các lớp dịch vụ web.

+0

k, thnx. Trong lớp chúng ta có thể thực hiện INotifyPropertychanged và thậm chí chúng ta có thể viết các cuộc gọi trở lại, co giật vv Nhưng trong Datatable hoặc trong DataRow làm thế nào chúng ta có thể xác định các thông báo thay đổi? Đó là những gì khiến tôi hỏi câu hỏi này –

+0

DataTable có một sự kiện RowChanged mà bạn có thể sử dụng. Nhưng có thể bạn không cần sử dụng nó. ViewModel có thể tăng các sự kiện PropertyChanged theo yêu cầu. DataRow không nên thay đổi bên dưới ViewModel quá nhiều nếu ViewModel đang kiểm soát dữ liệu đi vào và ra khỏi DataRow. – Josh

1

Xem xét sự khác biệt giữa việc sử dụng mô hình thiếu máu so với mô hình đa phương tiện trong MVVM. Trong mô hình thiếu máu; đó là những gì bạn nhận được với một datatable, bạn thực hiện các thuộc tính và hook up tất cả các sự kiện INotify trong VM của bạn. Nếu bạn đi các tuyến đường mô hình phong phú như xây dựng bạn sở hữu các đối tượng kinh doanh hoặc sử dụng một khuôn khổ như CSLA, sau đó bạn nhận được rất nhiều hành động từ mô hình của bạn và VM của bạn nhỏ hơn/đơn giản hơn nhiều.