Một câu giải thích:
MVVM là một reimagining của mô hình cũng yêu Model-View-Presenter (MVP) được thiết kế để làm việc đặc biệt tốt với các cơ sở liên kết dữ liệu cung cấp với WPF để tách logic ứng dụng từ thiết kế giao diện người dùng.
dài hơn, hữu ích hơn, giải thích:
Khái niệm cơ bản về MVVM là giờ nghỉ ngoài một ứng dụng WPF thành các thành phần riêng biệt mỗi trong số đó có một trách nhiệm trong quá trình thu thập thông tin trên màn hình.
Trước hết, bạn có mô hình. Đây là một lớp có chức năng rất hạn chế thường được phổ biến từ một số nguồn bên ngoài như cơ sở dữ liệu hoặc dịch vụ web. Ví dụ:
public class MessageModel
{
public string Message { get; set; }
}
Trên hết, bạn đặt lớp ViewModel, đây là nơi logic của ứng dụng nằm, nó thông báo giao diện của các thay đổi đối với mô hình và đảm bảo tính nhất quán của dữ liệu. Bằng cách thực hiện giao diện INotifyPropertyChanged hai cách dữ liệu giữa ViewModel và khung nhìn được đưa ra miễn phí bởi WPF:
public class MessageViewModel : INotifyPropertyChanged
{
private MessageModel _model;
public string Message
{
get { return _model.Message; }
set
{
if (_model.Message != value)
{
_model.Message = value;
OnPropertyChanged("Message");
}
}
}
}
Cuối cùng bạn có dạng xem.Đây là một tập tin XAML mô tả cách bố trí các nút điều khiển dùng để hiển thị và chỉnh sửa dữ liệu trong ViewModel:
<Canvas>
<TextBox Text={"Binding Message"} />
</Canvas>
Lý do mà bạn đi đến tất cả các nỗ lực này là mô hình rất nhẹ và dễ dàng thông qua trên ranh giới miền. Nó rất đơn giản để gửi hoặc nhận nó từ một webservice hoặc ánh xạ nó vào một bảng cơ sở dữ liệu. ViewModel, mặt khác phức tạp, nhưng có ít sự phụ thuộc - nó không quan tâm đến nơi mà mô hình lấy dữ liệu của nó, chỉ có nó ở đó và nó không có khái niệm nào về một cái nhìn mà làm cho nó rất khả thi (logic của ứng dụng của bạn không dựa vào giao diện người dùng để kiểm tra). Cuối cùng, xaml được chia thành nhiều phần và có thể được trao cho một nhà thiết kế không cần biết gì về logic của ứng dụng, chỉ có ViewModel sẽ trình bày dữ liệu nhất định dưới một số tên nhất định. Sự đóng gói này làm cho nó rất dễ dàng để xác định vai trò trong các dự án lớn, hoặc đặt cùng một giao diện người dùng hạn chế để kiểm tra logic trong khi thực tế đang được đánh bóng.
Nguồn
2009-07-20 12:17:19
1 Haha. Một nhà phát triển phần mềm cổ điển.Bạn đã cho người dùng chính xác những gì anh ta yêu cầu, nhưng hóa ra nó không có lợi cho anh ta chút nào và nó có lẽ không phải là điều anh ta thực sự muốn. (Làm cho tôi cười) = :) –