У меня есть окно на основе MVVM со многими элементами управления, а моя модель реализует IDataErrorInfo
.Как закрепить обновление ошибок проверки при просмотре ViewModel с помощью IDataErrorInfo?
Существует также кнопка SaveCommand
, которая производит валидацию, анализируя Model.Error
.
В представлении отображается красная рамка по умолчанию вокруг элементов управления с ошибками только при изменении значения конкретного элемента управления или когда я уведомляю об изменении этого свойства с помощью PropertyChanged.
Как я могу заставить View отобразить все ошибки проверки, даже если я не касался элементов управления?
Все мои проверки включают ValidatesOnDataErrors=True, NotifyOnValidationError=True
.
Я знаю, что одно решение состоит в том, чтобы иметь агрегатную коробку со всеми ошибками, но я бы предпочел отображать ошибки на основе управления.
Я не хочу запускать Model.NotifyPropertyChanged
для каждого связанного свойства из ViewModel.
Я использую WPF 4.0, а не Silverlight, поэтому INotifyDataErrorInfo
не будет работать.
Спасибо за трюк с PropertyChanged. Я не знал, что это возможно. Я нашел еще одно обсуждение этой темы: http://stackoverflow.com/questions/1135012/wpf-mvvm-can-a-single-propertychanged-update-all-the-data-bindings-of-a-datate if кто-то заинтересован. Это хороший ответ, если у кого-то есть простой, простой viewModel.Однако у меня сложный вид с вложенными ViewModels, поэтому мне пришлось бы писать код для вызова PropertyChanged один раз для каждой вложенной связанной модели/ViewModel, которая реализует INotifyPropertyChanged. – surfen
. Полезно знать этот трюк, если вы хотите обновить только часть связанного с представлением к определенному ViewModel – surfen
myControl.GetBindingExpression (ControlType.ControlProperty) .UpdateTarget(); фактически обновляет вашу версию без обновления исходного свойства. – r41n