Theo như tôi phát triển ứng dụng WPF với MVVM, tôi không bao giờ phơi bày mô hình thông qua tài sản công khai của viewmodel. Dù sao thì, sau khi tôi mới đến thế giới của Silverlight và WCF RIA, tôi đã tìm ra phương pháp mới để đạt được xác nhận dữ liệu, điều đó được nói bởi thuộc tính Bắt buộc. (cũng có những thuộc tính khác)Tại sao không tốt để hiển thị Mô hình thông qua ViewModel trong Silverlight MVVM?
Lần này thay vì tạo logic xác nhận bên trong viewmodel, tôi có thể thực hiện hầu hết logic xác thực bên trong chính mô hình đó.
public class TestUserPM {
[Key]
public int ID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string Email { get; set; }
}
Sau đó, tất cả những gì tôi cần trong ViewModel là hiển thị thuộc tính công khai của loại TestUserPM và để Xem ràng buộc trực tiếp với mô hình.
Tôi nghĩ đây không phải là giải pháp thanh lịch nhưng nó có thể hoạt động và không cần phải tạo ra xác thực tẻ nhạt bên trong thuộc tính viewmodel.
Có bất kỳ phần nào của phương pháp này không?
Cập nhật 1
Tôi chỉ tìm thấy 1 xuống phía, có thể nó có giải pháp ra khỏi đó. Tôi muốn ràng buộc Command của Button, ví dụ, nút lưu vào Command trong ViewModel nhưng nút này có thể thực hiện nếu và chỉ khi tất cả các thông tin là hợp lệ. Từ kinh nghiệm của tôi với WPF MVVM mà tôi đã giúp đỡ lớp tôi sẽ gọi OnCanExecuteChanged()
bên trong public string this[string columnName]
của IDataErrorInfo
.
Tôi có thể xử lý như thế nào với loại yêu cầu này?
Tôi cũng làm như vậy. ViewModel là ở đây để lộ và thích ứng với các mô hình để xem. –
Ý tưởng sử dụng Mô hình trực tiếp vi phạm quy tắc của Encapsulationbecause không ai nên làm 'MyObject.Child.ChildChild.NChild.SomeProperty'. Ngoài ra nó là một lần nữa sự tách biệt giữa Model và View bởi vì nếu bạn thay đổi Propertyname trong Model của bạn, bạn phải thực hiện nó trong View/'s – WiiMaxx