2012-01-18 34 views
13

Giả sử tôi có Chế độ xem. Đó là DataContext bị ràng buộc là ViewModelViewModel phơi bày một thuộc tính Model.Chế độ xem có nên liên kết gián tiếp với các thuộc tính trong Mô hình trong MVVM không?

  • MVVM thích để ràng buộc các trường trong View đến thuộc tính trong Model (ví dụ Binding Path=Model.FirstName)?
  • Nếu Model triển khai INotifyPropertyChanged?

Nhóm của tôi đang sử dụng Prism và MVVM trong WPF. Rất nhiều ví dụ Prism liên kết gián tiếp với Model. Cá nhân tôi có nghi ngờ rằng đây là cách tiếp cận chính xác. Tôi nghĩ rằng các công cụ trong mô hình sẽ hiển thị hành vi (không chỉ ở cấp thuộc tính) và nên liên lạc các sự kiện quan trọng bằng cách, er, event s - khách hàng đó có thể đăng ký hay không.

Tôi nghĩ rằng bằng cách có các đối tượng miền/mô hình thực hiện INotifyPropertyChanged bằng cách nào đó nói với thế giới rằng đó là giao diện UI/UX và loại giới thiệu một số dự phòng trong số ViewModel s.

Bạn nghĩ sao? Điều gì làm việc cho bạn? Sự khác biệt rõ ràng giữa View/ViewModel/Model hoặc lai như được sử dụng trong các ví dụ về Prism?

+0

Xem xét rằng bạn không thể liên kết với các trường, không. Bất động sản là một vấn đề khác nhau ... – Will

+0

Điểm tốt ..... –

Trả lời

21

Tôi đã thấy nhiều người triển khai trực tiếp INotifyPropertyChanged trong số Model của mình và tương tự tôi cũng đã thấy mọi người làm điều đó trong ViewModel.

Tôi thích và thực hiện việc này (triển khai INotifyPropertyChanged) trong ViewModel. Tôi đồng ý với bạn nó đôi khi tạo dư thừa trong ViewModel nhưng tôi thích sự phân biệt rõ ràng/tách biệt giữa ViewModelModel và mục đích của chúng. Với tôi Model chỉ là theo nghĩa đen là Model. Nó chỉ là đại diện của tôi Business Data không có gì nhiều hơn ít hơn. Với tôi, nó không được gây ra bất kỳ thay đổi nào trong số View (thông qua sự kiện thay đổi thuộc tính thông báo). View nên nói chuyện với ViewModelViewModel nên sử dụng Model. Tôi không thích Xem trực tiếp ảnh hưởng đến Model. Tôi không thích sử dụng Model.FirstName vì đối với tôi, dường như nó sẽ chống lại MMVM bằng cách nói View những gì có trong Model

+0

Cảm ơn Haris. Tôi đồng ý. –

+0

+1, tôi cũng đồng ý. – ken2k

+2

Những gì tôi có 10 trường hợp khác nhau của mô hình và mỗi trường hợp có 20 tài sản, nó sẽ không được một nỗi đau trong ass để exlpicitly phơi bày tất cả các thuộc tính thos trong ViewModel? –

Các vấn đề liên quan