Я использую шаблон 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.