Mise à jour seule ligne dans un WPF Datagrid
Je suis de la création d'un gestionnaire de téléchargement, et mon WPF datagrid est lié à une collection d'objets représentant des téléchargements en cours (dans des threads séparés). Quand j'ai plusieurs téléchargements en cours d'exécution, chacun est à l'aide de ce code pour mettre à jour sa grille de données point à chaque seconde:
if (DateTime.Now > download.LastUpdateTime.AddSeconds(1))
{
this.downloadsGrid.Items.Refresh();
download.LastUpdateTime = DateTime.Now;
}
Datagrid.Éléments.Refresh() fait le travail, mais il reconstruit l'ensemble de la grille de données, à l'origine de tous les téléchargements de mise à jour des uns et des autres lignes de grille de données plusieurs fois en une seconde, et je ne veux pas que ce genre de comportement. Est-il possible d'actualiser une ligne spécifique (point) dans un datagrid?
Vous devez vous connecter pour publier un commentaire.
Si vous liez votre grille de données à un ObservableCollection (qui implémente INotifyCollectionChanged) votre grille de données permettra d'être averti lorsqu'un nouvel élément est ajouté ou un élément est supprimer. En outre, si vous êtes juste de mettre à jour une propriété sur un objet dans la collecte de l'objet doit mettre en œuvre INotifyPropertyChanged et déclencher l'événement PropertyChanged qui dira la grille de données pour mettre à jour cette valeur.
Votre téléchargement de classe en œuvre
INotifyPropertyChanged
? Si pas, c'est pourquoi vous appelez l'actualiser pour voir un changement dans la grille. Si vous mettez en œuvreINotifyPropertyChanged
la liaison sera mis à jour lorsque la valeur est modifiée.