Как вручную запустить проверку IDataErrorInfo для всех TabItems - MVVM - PullRequest
1 голос
/ 11 января 2020

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

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

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

EDIT

Подробнее:

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

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

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

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

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

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

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

...