Model-View-ViewModel rất phổ biến với WPF và Silverlight. Tôi đã sử dụng điều này cho các dự án gần đây nhất của tôi và là một người hâm mộ rất lớn.Điều gì khiến MVVM trở nên phù hợp với WPF?
Tôi hiểu rằng đó là sàng lọc MVP. Tuy nhiên, tôi tự hỏi chính xác những đặc điểm độc đáo của WPF (và Silverlight) cho phép MVVM hoạt động, và ngăn chặn (hoặc ít nhất là làm cho khó khăn) mô hình này làm việc bằng cách sử dụng các khung công nghệ khác.
Tôi biết MVVM có sự phụ thuộc mạnh mẽ vào công nghệ ràng buộc dữ liệu mạnh mẽ trong WPF. Đây là một trong những tính năng mà nhiều bài viết và blog dường như đề cập đến như là chìa khóa để WPF cung cấp các phương tiện phân chia mạnh mẽ của View từ ViewModel. Tuy nhiên, ràng buộc dữ liệu tồn tại trong many forms trong các khung giao diện người dùng khác. Thậm chí còn có các dự án như Truss cung cấp dữ liệu kiểu WPF cho POCO trong .NET.
Tính năng nào khác ngoài ràng buộc dữ liệu, làm cho WPF và Silverlight duy nhất phù hợp với Model-View-ViewModel?
Tại sao bạn cảm thấy XAML là bắt buộc đối với MVVM? –
Vì 2 lý do, DataBinding (trong MVVM được thực hiện thông qua XAML) và ControlTemplates. Nếu không có sau này, việc chỉnh sửa/tạo điều khiển của chính chúng ta sẽ bị ràng buộc mã, làm cho MVVM trở nên khó khăn hơn khi làm việc với các điều khiển do người dùng tạo ra. – Carlo
Databinding không cần phải được thực hiện thông qua XAML, và có một số người thích chia nó ra khỏi XAML. Trong khi tạo giao diện người dùng mã khó hơn XAML, điều đó là có thể và không ảnh hưởng đến việc sử dụng MVVM. Và tôi nghĩ rằng các mẫu dữ liệu có liên quan nhiều hơn đến MVVM so với mẫu kiểm soát. –