2009-05-23 6 views
0

Je commence tout juste avec des collections (ObservableCollections) et j'ai frappé un mur que je supposais facile. Je suis sûr que c'est facile mais je ne trouve pas la réponse.Passer à un nouvel enregistrement sur Collection

J'ai un écran WPF avec un DataGrid à gauche et TextBoxes à droite de l'écran. Le DataGrid est lié à ObservableCollection (Activities) et je peux cliquer sur le DataGrid et voir mes TextBoxes actualiser avec les informations correctes. Je peux alors modifier l'information dans les TextBoxes et la sauvegarder dans la DB. Tout fonctionne parfaitement!

Cependant, en ce qui concerne l'ajout d'un enregistrement à la collection que je suis perdu à l'approche correcte. J'utilise la méthode Add comme indiqué ci-dessous, mais comment puis-je passer à cet enregistrement nouvellement créé afin qu'il puisse être modifié? J'ai essayé une douzaine d'approches mais je n'ai pas encore trouvé une approche correcte. Les TextBox restent juste concentrés sur le dernier enregistrement édité. Des idées?

Private Activities As ObservableCollection(Of ActivityRecord) 

Private Sub AddMode() 
    Dim _ActivityRecord As New ActivityRecord(0, DateTime.Now, Nothing, "", gWorkerID, "") 
    Activities.Add(_ActivityRecord) 
'Code to move to the newly created record should go here 

Répondre

0

Dans WPF, tous les ItemsControl dérivés contrôle (liste de votre DataGrid) secrètement utilise un dérivé de CollectionView pour faciliter la navigation entre les enregistrements/articles - en effet, il est la classe qui fournit le mécanisme monétaire que aide les autres contrôles (comme la zone de texte) à déterminer quel élément lié aux données est actuel.

Si vous créez un nouvel objet et de l'ajouter à votre ObservableCollection, vous pouvez utiliser une des méthodes MoveXXX du CollectionView de se déplacer pour faire que le courant de l'élément. Vous pouvez (en fonction du type de CollectionView que vous obtenez) appeler la méthode Add sur CollectionView et appeler automatiquement la méthode Add sur votre ObservableCollection sous-jacent.

De toute façon, retriving une référence au CollectionView est le secret. Vous pouvez utiliser la méthode statique de CollectionView (j'oublie son nom) pour récupérer l'affichage utilisé pour votre DataGrid ou (et c'est ma méthode préférée) vous pouvez explicitement créer un ListCollectionView et lier votre DataGrid à lui, au lieu de la ObservableCollection .

+0

Salut Marc, J'utilise un DataGrid Xceed qui utilise un DataGridCollectionView qui fait la même chose que ListCollectionView donc j'ai décidé d'utiliser. Merci de m'avoir indiqué la bonne direction. Mitch – Mitch