Làm cách nào để chia sẻ dữ liệu giữa nhiều Chế độ xem?
MVVM: Chia sẻ dữ liệu giữa ViewModels
Ví dụ: có một lớp có tên Project trong ứng dụng.
public class Project : ModelBase
{
private string _projectName;
public string ProjectName
{
get { return _projectName; }
set
{
_projectName = value;
RaisePropertyChanged(() => ProjectName);
}
}
}
Trong nhiều ứng dụng ViewModels nên truy cập ActiveProject.
Cách tốt nhất để chia sẻ Project giữa ViewModels là gì?
- Mẫu hòa giải? (Messaging)
- đối tượng tĩnh
- Singleton pattern (Nếu có như thế nào?)
Tôi đã sử dụng Tin nhắn trước nhưng nó cần nhiều codding. Đối với tất cả các ViewModels tôi đã tạo thuộc tính ActiveProject và cũng phải đăng ký một messenger để cập nhật điều đó.
Tôi sử dụng khung công tác Ánh sáng MVVM.
Bất kỳ ví dụ mã nào cũng sẽ được đánh giá cao.
'ActiveProject' của bạn có được tạo ra ở đâu đó bằng một trong các kiểu xem không? Nếu vậy, nhắn tin có lẽ sẽ là tốt nhất (và nó không * là * tiết). Tùy chọn khác là để chèn một 'ActiveProject' cho mỗi mô hình xem cần thiết trong khi thiết lập' ActiveProject' đời để singleton trong container IoC của lựa chọn - tùy chọn thứ ba bạn đã đề xuất ... Nhưng cho đến nay nó chủ yếu là đoán về phía tôi . –
@ TrustMe-I'maDoctor Tại sao chúng ta WPFers luôn luôn overcomplicate tất cả mọi thứ? Nó sẽ không dễ dàng hơn để lưu trữ nó trong lớp 'App' như một thuộc tính tĩnh? –
@ HighCore Đó luôn luôn là một lựa chọn ... Một tài sản đọc-viết tĩnh xoa tôi một cách sai lầm, quá dễ dàng để lạm dụng. :) –