Pourquoi ItemContainerGenerator.ContainerFromIndex () renvoie null et comment éviter ce comportement?
Je suis en utilisant ce modèle pour analyser les lignes que j'ai sélectionné dans un contrôle datagrid.
for (int i = 0; i < dgDetalle.Items.Count; i++)
{
DataGridRow row = (DataGridRow)dgDetalle.ItemContainerGenerator.ContainerFromIndex(i);
FrameworkElement cellContent = dgDetalle.Columns[0].GetCellContent(row);
//... code ...
}
Le cycle se passe bien, mais lors du traitement de certains indices, la deuxième ligne lève une exception de null. MSDN de la documentation dit que ItemContainerGenerator.ContainerFromIndex(i)
renvoie la valeur null si 'si l'élément n'est pas réalisé, mais cela ne m'aide pas à deviner comment pourrais-je obtenir la valeur souhaitée.
Comment puis-je analyser toutes les lignes? Est-il un autre moyen?
Mise à JOUR
Je suis à l'aide de cet extrait à lire un CheckBox
comme expliqué ici. Je ne peux donc pas utiliser la liaison ou ItemSource
à moins que j'ai changer beaucoup de choses. Et je ne peux pas. Je suis en train de faire la maintenance du code.
source d'informationauteur JPCF
Vous devez vous connecter pour publier un commentaire.
La
DataGrid
est de virtualiser les éléments, les lignes respectives (conteneurs) sont créés uniquement lorsque la ligne est en vue.Vous pouvez soit désactiver la virtualisation (ce qui rend le premier temps de chargement très lent si vous avez de nombreux éléments, aussi l'utilisation de la mémoire sera plus élevé) ou que vous venez d'effectuer une itération sur les données et vérifier les valeurs des données de propriétés d'objets qui devraient être lié à la grille de données. Habituellement, vous ne devriez pas avoir besoin les éléments de l'INTERFACE utilisateur à tous les...
Essayer cela,
Utiliser cet abonnement: