Nous avons un problème pour mettre au point une cellule de DataGrid après que ses données de collection bornée aient été actualisées. par exemple, nous définissons un filtre pour sa collection, puis nous voulons recentrer une cellule stockée de colonne stockée.Est-ce que ScrollIntoView est synchronisé dans virtualstackpannel (en particulier dans WPF DataGrid)?
Est-il vrai que nous pensons qu'un appel à ScrollIntoView est synchronisé, cela signifie que, après l'appel, notre ligne et cellule souhaitées sont créées et que nous pouvons définir le focus? (Encore une fois, cela signifie après que nous appelons à ScrollIntoView, est-il vrai que nous pensons que Itemsgenerator a terminé ses travaux et nous pouvons trouver hargneux notre cellule souhaitée)
$
//set filter of DataGrid Collection
DataGrid_Standard.ScrollIntoView(rowNumber,cellNumber);
//we sure our desired cell are created now
DataGridRow row = (DataGridRow)DataGrid_Standard.ItemContainerGenerator.ContainerFromIndex(index);
if (row == null)
{
// may be virtualized, bring into view and try again
DataGrid_Standard.ScrollIntoView(DataGrid_Standard.Items[index]);
row = (DataGridRow)DataGrid_Standard.ItemContainerGenerator.ContainerFromIndex(index);
}
DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);
// try to get the cell but it may possibly be virtualized
DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
// now try to bring into view and retreive the cell
DataGrid_Standard.ScrollIntoView(rowContainer, DataGrid_Standard.Columns[column]);
cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column); cell.focus();
Toute idée serait très utile – Mojtaba