Hãy nói rằng trong một số ViewModel trừu tượng cơ sở lớp tôi có một tài sản đồng bằng tuổi như sau:Thông báo Thay đổi trong MVVM tầng nấc
public Size Size
{
get { return _size; }
set
{
_size = value;
OnPropertyChanged("Size");
}
}
sau đó tôi tạo ra một ViewModel cụ thể hơn, kế thừa từ trước đó, trong đó có các tài sản sau đây:
public Rect Rectangle
{
get { return new Rect(0, 0, _size.Width, _size.Height); }
}
Bây giờ, trong một số lớp View tôi liên kết với tài sản Rectangle
nói trên ViewModel của. Tất cả mọi thứ hoạt động tốt, cho đến khi tôi thay đổi kích thước. Khi Size
thay đổi, Rectangle
không biết về thay đổi đó và thay đổi không lan truyền đến Chế độ xem. Và kể từ khi Rectangle
là trong lớp trẻ em, tôi không thể chỉ cần thêm một OnPropertyChanged("Rectangle")
vào thiết lập Size
.
Bây giờ hãy tưởng tượng rằng tôi có nhiều thuộc tính khác nhau như Rectangle
, tất cả đều phụ thuộc vào thuộc tính cấp cơ sở và không có thay đổi nào trong số những thay đổi này đang được phổ biến. Tôi cần một số thông báo thay đổi chuỗi nhẹ và thanh lịch, tốt nhất là không yêu cầu nhiều mã và không buộc tôi sử dụng các thuộc tính phụ thuộc.
Rõ ràng là có rất nhiều giải pháp xấu xí ở đây- những gì tôi đang tìm kiếm là thứ gì đó sạch sẽ và thông minh. Dường như với tôi đây sẽ là một kịch bản rất phổ biến, và có vẻ như với tôi có thể có một cách MVVM thân thiện với cách thực hiện việc này.
Ý tưởng tuyệt vời. Tôi đã thay đổi nó một chút để tạo ra một từ điển tại thời điểm xây dựng (vì lý do hiệu suất), nhưng khái niệm là âm thanh. – Charlie