Tôi có một Cửa sổ dựa trên MVVM có nhiều điều khiển và Mô hình của tôi triển khai IDataErrorInfo
.Làm cách nào để buộc cập nhật lỗi xác thực trên Chế độ xem từ ViewModel bằng IDataErrorInfo?
Ngoài ra còn có nút SaveCommand
, thực hiện xác thực bằng cách phân tích thuộc tính Model.Error
.
Chế độ xem hiển thị đường viền màu đỏ mặc định xung quanh các điều khiển có lỗi chỉ khi tôi thay đổi giá trị của điều khiển cụ thể hoặc khi tôi thông báo về thay đổi thuộc tính đó bằng PropertyChanged.
Làm cách nào để bắt buộc Chế độ xem hiển thị tất cả các lỗi Xác thực ngay cả khi tôi không chạm vào các điều khiển?
Tất cả các ràng buộc xác thực của tôi bao gồm ValidatesOnDataErrors=True, NotifyOnValidationError=True
.
Tôi biết một giải pháp là có một hộp tổng hợp với tất cả các lỗi, nhưng tôi muốn hiển thị lỗi trên cơ sở trên mỗi điều khiển.
Tôi không muốn kích hoạt Model.NotifyPropertyChanged
cho mỗi thuộc tính bị ràng buộc từ ViewModel.
Tôi sử dụng WPF 4.0, không phải Silverlight, vì vậy INotifyDataErrorInfo
sẽ không hoạt động.
Cảm ơn bạn đã lừa với PropertyChanged. Tôi không biết điều đó là có thể. Tôi đã tìm thấy một cuộc thảo luận khác về chủ đề này: http://stackoverflow.com/questions/1135012/wpf-mvvm-can-a-single-propertychanged-update-all-the-data-bindings-of-a-datate nếu ai cũng quan tâm. Đây là câu trả lời hay nếu ai đó có một viewModel đơn giản, đơn giản.Tuy nhiên tôi có một cái nhìn phức tạp với ViewModels lồng nhau vì vậy tôi sẽ phải viết mã để gọi PropertyChanged một lần cho mỗi lồng nhau ràng buộc Model/ViewModel mà thực hiện INotifyPropertyChanged – surfen
Thật tốt khi biết mẹo này nếu muốn cập nhật chỉ một phần của khung nhìn liên quan cho một ViewModel cụ thể – surfen
myControl.GetBindingExpression (ControlType.ControlProperty) .UpdateTarget(); thực sự nhận được xác thực của bạn được cập nhật mà không cập nhật thuộc tính nguồn của bạn. – r41n