Я использую шаблон 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.
public string this[string name]
- person Adam Dobrzeniewski   schedule 12.01.2020(Validation.Errors)[0].ErrorContent
с другой вкладки. - person Adam Dobrzeniewski   schedule 14.01.2020