У меня есть DataGrid, который я связываю в функции конструктора моего UserControl (после InitializeComponent). Мне нужно получить доступ к некоторым строкам в нем, поэтому в загруженном событии для UserControl я запускаю:
DataGridRow row = (DataGridRow)myDataGrid.ItemContainerGenerator.ContainerFromIndex(rowIdx);
Однако всякий раз, когда я это делаю, ItemContainerGenerator.ContainerFromIndex возвращает ноль. Похоже, DataGrid еще не был полностью сгенерирован, поэтому, чтобы проверить / подтвердить эту теорию, я нажал кнопку на экране, и по событию нажатия кнопки я снова запустил этот код, а затем, конечно же, строка ценность. Итак, это подтверждается, когда запускается загруженное событие UserControl, это происходит слишком рано, и я пока не могу вызвать ItemContainerGenerator.ContainerFromIndex для моей DataGrid.
Какое событие запускается после загрузки, чтобы я мог использовать вместо него?
Примечание : Я также попробовал этот код, который нашел, но получил те же результаты:
DataGridRow row = (DataGridRow)myDataGrid.ItemContainerGenerator.ContainerFromIndex(rowIdx);
if (row == null)
{
myDataGrid.UpdateLayout();
myDataGrid.ScrollIntoView(myDataGrid.Items[rowIdx]);
row = (DataGridRow)myDataGrid.ItemContainerGenerator.ContainerFromIndex(rowIdx);
}
И я также попытался сделать это в загруженном событии DataGrid, но результаты те же.
Спасибо!