Tôi đã đi qua hai cách khởi tạo Views và ViewModels trong WPF CAL MVVM.Cách chính xác để khởi tạo một mô hình và xem trong WPF CAL MVVM
1 - Dường như phổ biến hơn. Yêu cầu bạn giải quyết ViewModel để tự động giải quyết Chế độ xem. ViewModel chứa thông tin về View.
public interface IView
{
void SetModel(IViewModel model);
}
public interface IViewModel
{
IView View { get; }
}
public class View
{
public void SetModel(IViewModel model)
{
this.DataContext = model;
}
}
public class ViewModel
{
private IView view;
public ViewModel(IView view)
{
this.view = view;
}
public IView View { return this.view; }
}
2 - Dường như dọn dẹp hơn và xóa Chế độ xem khỏi Chế độ xem. Yêu cầu bạn giải quyết Chế độ xem để tự động giải quyết ViewModel. Tiêm đồ vật vào trong tầm nhìn (Không chắc chắn nếu điều này là tốt hay không).
public interface IView
{
}
public interface IViewModel
{
}
public class View
{
private IViewModel model;
public View(IUnityContainer unityContainer)
{
this.model = unityContainer.Resolve<IViewModel>();
this.DataContext = this.model;
}
}
public class ViewModel
{
}
Phương pháp được chấp nhận để khởi tạo chế độ xem và mô hình là những ưu điểm và nhược điểm của từng phương pháp. Bạn có nên tiêm các đối tượng vào chế độ xem của mình không?
The View sở hữu trong tùy chọn 1 đã được tìm thấy bởi tôi trong các ví dụ khác nhau nhưng tôi đồng ý rằng nó không nên ở đó. – anon