Как вручную запустить проверку IDataErrorInfo для всех TabItems — MVVM

Я использую шаблон MVVM, мое приложение в основном TabControl с 3 TabItems с DataGrid внутри них.

Я могу сохранить все данные из сеток в файлы csv и загрузить их обратно. Я пытаюсь добавить функциональность, которая после того, как пользователь нажимает кнопку, появляется новое окно коллекции строк со всеми ошибками проверки DataGrids. Мне почти удалось, но я обнаружил, что мне нужно щелкнуть по всем TabItems, чтобы запустить проверку их свойства IDateErrorInfo и собрать строки.

Итак, мой вопрос: как я могу вручную запустить проверку конкретной вкладки из кода? Я пробовал что-то вроде перехода по всем вкладкам со свойством SelectedIndex TabControl в цикле, запускающем PropertyChanged("SelectedIndex") каждый раз, и он меняет вкладку, но не запускает проверку, и я получаю ошибки только с последней, теперь видимой вкладки.

EDIT

Подробнее:

Каждая моя вкладка имеет свой собственный ViewModel с ObservableCollection<[TabModel]>, подключенным к DataGrid. Все 3 TabModels имеют интерфейс IDataErrorInfo. Каждая вкладка имеет собственный файл xaml, и все эти файлы собраны в файле TabControl MainWindows.xaml следующим образом:

<TabControl SelectedIndex="{Binding SelectedTab, UpdateSourceTrigger=PropertyChanged}">

        <TabItem Width="auto" Header="FOO" Name="Foo">
            <Controls:Foo DataContext="{Binding FooVM}"/>
        </TabItem>
        ...
</TabControl>

В Foo.xaml у меня есть простой DataGrid со столбцами и включенной проверкой для определенного столбца, то есть:

<DataGridTextColumn Header="ID" Binding="{Binding Id, ValidatesOnDataErrors=True}"/>

В каждой TabModel у меня есть List<string> Errors, к которому я добавляю каждый результат из IDataErrorInfo public string this[string name]

Я пытаюсь получить/выполнить всю проверку из позиции кода MainWindowVM.


person Adam Dobrzeniewski    schedule 11.01.2020    source источник
comment
Детали обновлены   -  person Adam Dobrzeniewski    schedule 12.01.2020
comment
Ах да, этого не писал, думал, что это не так важно и не влияет на решение этой проблемы :x В каждой TabModel у меня есть List‹string› Errors, к которым я добавляю каждый результат из IDataErrorInfo public string this[string name]   -  person Adam Dobrzeniewski    schedule 12.01.2020
comment
Посмотрите здесь - stackoverflow.com/questions/14023552/   -  person Sasha    schedule 13.01.2020
comment
Это не очень полезно. Я применил стиль всплывающей подсказки для всех своих сеток, проблема заключается в том, чтобы в первую очередь вызвать проверку, чтобы я мог видеть эти (Validation.Errors)[0].ErrorContent с другой вкладки.   -  person Adam Dobrzeniewski    schedule 14.01.2020
comment
Что, если вы сохраните ошибку проверки в виртуальной машине? Тогда вам не нужно полагаться на обновление пользовательского интерфейса. Привязка срабатывает, когда отображаются элементы управления пользовательского интерфейса. Если вы установите ItemsSource в TabControl, вам не нужно будет устанавливать контекст данных в элементе управления.   -  person XAMlMAX    schedule 14.01.2020
comment
Извини, но я действительно не понимаю тебя. Что вы подразумеваете под ошибкой проверки хранилища в виртуальной машине? Вы имеете в виду MainWindowVM или виртуальные машины конкретных вкладок? Привязка срабатывает, когда отображаются элементы управления пользовательского интерфейса? Это моя главная цель во всей этой теме :x Так что для меня это не так просто.   -  person Adam Dobrzeniewski    schedule 17.01.2020