У меня есть ObservableCollection, где T: INotifyDataErrorInfo.Если я использую DataGrid в режиме редактирования, и на объекте возникает ошибка, кроме точного столбца, отображающего красную рамку, ФОН ВСЕГО СТРОКА становится красным.
Мне нужна та же функциональность, но врежим только для чтения!Проблема в том, что DataGrid не прослушивает событие ErrorsChanged, пока не перейдет в режим редактирования.Как я могу это исправить?Должен ли я создать подкласс DataGrid?(Я бы предпочел не делать этого, я бы предпочел использовать стили или поведение) Где я могу получить доступ к стилю фона строки?
РЕДАКТИРОВАТЬ:
Я пробовал двановые вещи:
- Я подписался на событие RowLoading решетки данных и оттуда подписался на событие Loaded строки и событие ErrorsChanged объекта DataContext (и отменил подписку на RowUnloading) и попытался установить VisualState строкииз этих обработчиков событий на основе достоверности DataContext.Тем не менее, поскольку установка визуального состояния не меняет фактическое состояние элемента управления, поэтому, когда ему необходимо изменить состояния (например, при наведении курсора мыши или выделении), оно снова изменяется на Действительный.
- Используя трюк, который яИзучив ComboBoxes ( см. здесь ), я попытался привязать DataContext к DataGridRow.Tag, используя
row.SetBinding(DataGridRow.TagProperty,new Binding());
(поскольку Source - это DataContext, а путь - весь объект), но абсолютноничего не произошло, как вопреки моим более ранним выводам, элементы управления ComboBox не обязательно прослушивают проверку для каждого свойства DependencyProperty.
Таким образом, становится все менее вероятным, что есть практическое решение.Есть мысли?